Hi, Sergey,  thanks for the patch! See my comments below. Sergey On 10/24/25 14:00, Sergey Kaplun wrote: > This patch adjusts the aforementioned test to use the benchmark > framework introduced before. The default arguments are adjusted > according to the file. The arguments to the script still > can be provided in the command line run. > --- > perf/LuaJIT-benches/spectral-norm.lua | 40 +++++++++++++++++++-------- > 1 file changed, 29 insertions(+), 11 deletions(-) > > diff --git a/perf/LuaJIT-benches/spectral-norm.lua b/perf/LuaJIT-benches/spectral-norm.lua > index ecc80112..6e63cd47 100644 > --- a/perf/LuaJIT-benches/spectral-norm.lua > +++ b/perf/LuaJIT-benches/spectral-norm.lua > @@ -1,3 +1,4 @@ > +local bench = require("bench").new(arg) > > local function A(i, j) > local ij = i+j-1 > @@ -25,16 +26,33 @@ local function AtAv(x, y, t, N) > Atv(t, y, N) > end > > -local N = tonumber(arg and arg[1]) or 100 > -local u, v, t = {}, {}, {} > -for i=1,N do u[i] = 1 end > +local N = tonumber(arg and arg[1]) or 3000 Why it was changed to 3000? > > -for i=1,10 do AtAv(u, v, t, N) AtAv(v, u, t, N) end > +bench:add({ > + name = "spectral_norm", > + checker = function(res) > + -- XXX: Empirical value. > + if N > 66 then > + assert(math.abs(res - 1.27422) < 0.00001) > + end > + return true > + end, > + payload = function() > + local u, v, t = {}, {}, {} > + for i=1,N do u[i] = 1 end add more whitespaces, here and below > > -local vBv, vv = 0, 0 > -for i=1,N do > - local ui, vi = u[i], v[i] > - vBv = vBv + ui*vi > - vv = vv + vi*vi > -end > -io.write(string.format("%0.9f\n", math.sqrt(vBv / vv))) > + for i=1,10 do AtAv(u, v, t, N) AtAv(v, u, t, N) end > + > + local vBv, vv = 0, 0 > + for i=1,N do > + local ui, vi = u[i], v[i] > + vBv = vBv + ui*vi > + vv = vv + vi*vi > + end > + return math.sqrt(vBv / vv) > + end, > + -- Operations inside `for i=1,10` loop. > + items = 40 * N * N, > +}) > + > +bench:run_and_report()