From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 34D1D16B02E5; Fri, 26 Dec 2025 11:15:54 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 34D1D16B02E5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1766736954; bh=TlnTeG1k0AzatO4+Wj4YbQLD4mKDe2syTAm+/duJbQQ=; h=Date:To:Cc:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=E4Lq10OaO1DEYgidiNxMDGW2jTS+c7niXzgZQH1cKSWi3gfoouTktn4QVUL84kPJN P8Iudol4P/M6YIae3iCAWiIFQDSLAjdDW7a5qhj4mHxCqEc61w/9MohZ6qEhvSIESM v2FRBy4E905Qih/l4VPCxZ+YwDz3LhSnyl/E3QeQ= Received: from send83.i.mail.ru (send83.i.mail.ru [89.221.237.178]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id C489216B02E5 for ; Fri, 26 Dec 2025 11:15:53 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org C489216B02E5 Received: by exim-smtp-7b4fb89df9-mqnbq with esmtpa (envelope-from ) id 1vZ2zI-00000000QxP-2q6w; Fri, 26 Dec 2025 11:15:53 +0300 Date: Fri, 26 Dec 2025 11:15:50 +0300 To: Sergey Bronnikov Cc: tarantool-patches@dev.tarantool.org Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD979975AF0D777FEBD78E5B51DE69E67E134CC12E14949938B182A05F538085040D663E8E3E6096A203DE06ABAFEAF67050360E98E66D1BFCA4F327FDBBEDA3D8189BD80B6B4489A2D X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE72E4E5201E1C2E308EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566657B88B02DF8C86950467B8DEA3B7BF63D414411B05D65E56A3CF99633BB4E00389733CBF5DBD5E913377AFFFEAFD269A417C69337E82CC2CC7F00164DA146DAFE8445B8C89999729449624AB7ADAF37F6B57BC7E64490611E7FA7ABCAF51C92176DF2183F8FC7C0D9442B0B5983000E8941B15DA834481F9449624AB7ADAF372E808ACE2090B5E14AD6D5ED66289B5259CC434672EE63711DD303D21008E298D5E8D9A59859A8B6B372FE9A2E580EFC725E5C173C3A84C3BE90F13D913F449135872C767BF85DA2F004C90652538430E4A6367B16DE6309 X-C1DE0DAB: 0D63561A33F958A5B3BAF5E2E95CA4895002B1117B3ED6966FC77B567F02CA3C30E4A65F242F5898823CB91A9FED034534781492E4B8EEADC24E78AA85F86F6CBDAD6C7F3747799A X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D6599D5896E7C5C7BF44E0955BE2A61D947AF284135976988B54D55927A4501263BB47C64A911451D60CB8341EE9D5BE9A0A96843EEAE5E4B573A79690027F5C7E99A1E1927A9EE0D00F8CD93680B12512CF4C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVdtTL5f5BIXbvPbjB0q5tjE= X-DA7885C5: 3C99F4F7EECEEF7DF255D290C0D534F95F799C2A3BB03F3057DB29A3DE59EEB0DC51112578EB05EF5B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2F6B8A794E822B976ACE52B2E1AA620BCD30F7C13B43365BAE49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH v1 luajit 10/41] perf: adjust fasta in LuaJIT-benches X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Hi, Sergey! Thanks for the review! Fixed your comments and added the description for the benchmark. On 23.12.25, Sergey Bronnikov wrote: > Hello, > > thanks for the patch! See my comments. > > Sergey > > On 10/24/25 13:50, 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. > > > > Since the result output (with the different input parameter value) > > produced by this benchmark is used in other benchmarks > > ( and ), the original script is used as a > > library (inside the subdirectory) with the updated default input > > value and returns the number of items processed. The output for the > > benchmark itself is suppressed and not checked since it is irrational to > > store in the repository such huge files for testing. > > --- > > perf/LuaJIT-benches/fasta.lua | 120 +++++++---------------------- > > perf/LuaJIT-benches/libs/fasta.lua | 98 +++++++++++++++++++++++ > > 2 files changed, 125 insertions(+), 93 deletions(-) > > create mode 100644 perf/LuaJIT-benches/libs/fasta.lua > > > > diff --git a/perf/LuaJIT-benches/fasta.lua b/perf/LuaJIT-benches/fasta.lua > > index 7ce60804..d0dc005d 100644 > > --- a/perf/LuaJIT-benches/fasta.lua > > +++ b/perf/LuaJIT-benches/fasta.lua Added the comment with the short benchmark description, as we discussed offline: =================================================================== diff --git a/perf/LuaJIT-benches/fasta.lua b/perf/LuaJIT-benches/fasta.lua index d0dc005d..457623b2 100644 --- a/perf/LuaJIT-benches/fasta.lua +++ b/perf/LuaJIT-benches/fasta.lua @@ -1,3 +1,9 @@ +-- Benchmark to check the performance of working with strings and +-- output to the file. It generates DNA sequences by copying or +-- weighted random selection. +-- For details see: +-- https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/fasta.html + local bench = require("bench").new(arg) local stdout = io.output() diff --git a/perf/LuaJIT-benches/libs/fasta.lua b/perf/LuaJIT-benches/libs/fasta.lua index e1592e77..58f59dd5 100644 --- a/perf/LuaJIT-benches/libs/fasta.lua +++ b/perf/LuaJIT-benches/libs/fasta.lua @@ -1,3 +1,10 @@ +-- Benchmark to check the performance of working with strings and +-- output to the file. It generates DNA sequences by copying or +-- weighted random selection. +-- For details see: +-- https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/fasta.html +-- Also, this file is used as a script to generate inputs for +-- other benchmarks like and . local Last = 42 local function random(max) =================================================================== > > +local bench = require("bench").new(arg) > > + > > +local stdout = io.output() > > + > > +local benchmark > > +benchmark = { > > + name = "fasta", > > + -- XXX: The result file may take up to 278 Mb for the default > > + -- settings. To check the correctness of the script, run it as > > + -- is from the console. > > + skip_check = true, > > + setup = function() > > + io.output("/dev/null") > > + end, > > + payload = function() > > + -- Run the benchmark as is from the file. > > + local items = require("fasta") > > + -- Remove it from the cache to be sure the benchmark will run > > + -- at the next iteration. > > + package.loaded["fasta"] = nil > > + benchmark.items = items > > + end, > > + teardown = function() > > + io.output(stdout) > > + end, > > } > > > > -local N = tonumber(arg and arg[1]) or 1000 > > -make_repeat_fasta('ONE', 'Homo sapiens alu', alu, N*2) > > -make_random_fasta('TWO', 'IUB ambiguity codes', iub, N*3) > > -make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, N*5) > > +bench:add(benchmark) > > +bench:run_and_report() > > diff --git a/perf/LuaJIT-benches/libs/fasta.lua b/perf/LuaJIT-benches/libs/fasta.lua > > new file mode 100644 > > index 00000000..9c72c244 > > --- /dev/null > > +++ b/perf/LuaJIT-benches/libs/fasta.lua > > @@ -0,0 +1,98 @@ > > + > > +local Last = 42 > > +local function random(max) > > + local y = (Last * 3877 + 29573) % 139968 > > + Last = y > > + return (max * y) / 139968 > > +end > > + > > +local function make_repeat_fasta(id, desc, s, n) > > + local write, sub = io.write, string.sub > > + write(">", id, " ", desc, "\n") > > + local p, sn, s2 = 1, #s, s..s > > + for i=60,n,60 do > more whitespaces please > > + write(sub(s2, p, p + 59), "\n") > > + p = p + 60; if p > sn then p = p - sn end > > + end > > + local tail = n % 60 > > + if tail > 0 then write(sub(s2, p, p + tail-1), "\n") end > more whitespaces please. Here and below. Reformated, as you suggested: =================================================================== diff --git a/perf/LuaJIT-benches/libs/fasta.lua b/perf/LuaJIT-benches/libs/fasta.lua index 9c72c244..e1592e77 100644 --- a/perf/LuaJIT-benches/libs/fasta.lua +++ b/perf/LuaJIT-benches/libs/fasta.lua @@ -10,12 +10,12 @@ local function make_repeat_fasta(id, desc, s, n) local write, sub = io.write, string.sub write(">", id, " ", desc, "\n") local p, sn, s2 = 1, #s, s..s - for i=60,n,60 do + for i = 60, n, 60 do write(sub(s2, p, p + 59), "\n") p = p + 60; if p > sn then p = p - sn end end local tail = n % 60 - if tail > 0 then write(sub(s2, p, p + tail-1), "\n") end + if tail > 0 then write(sub(s2, p, p + tail - 1), "\n") end end local function make_random_fasta(id, desc, bs, n) @@ -23,17 +23,17 @@ local function make_random_fasta(id, desc, bs, n) loadstring([=[ local write, char, unpack, n, random = io.write, string.char, unpack, ... local buf, p = {}, 1 - for i=60,n,60 do - for j=p,p+59 do ]=]..bs..[=[ end - buf[p+60] = 10; p = p + 61 + for i = 60, n, 60 do + for j = p, p + 59 do ]=]..bs..[=[ end + buf[p + 60] = 10; p = p + 61 if p >= 2048 then write(char(unpack(buf, 1, p-1))); p = 1 end end local tail = n % 60 if tail > 0 then - for j=p,p+tail-1 do ]=]..bs..[=[ end + for j = p, p + tail - 1 do ]=]..bs..[=[ end p = p + tail; buf[p] = 10; p = p + 1 end - write(char(unpack(buf, 1, p-1))) + write(char(unpack(buf, 1, p - 1))) ]=], desc)(n, random) end @@ -41,13 +41,13 @@ local function bisect(c, p, lo, hi) local n = hi - lo if n == 0 then return "buf[j] = "..c[hi].."\n" end local mid = math.floor(n / 2) - return "if r < "..p[lo+mid].." then\n"..bisect(c, p, lo, lo+mid).. - "else\n"..bisect(c, p, lo+mid+1, hi).."end\n" + return "if r < "..p[lo + mid].." then\n"..bisect(c, p, lo, lo + mid).. + "else\n"..bisect(c, p, lo + mid + 1, hi).."end\n" end local function make_bisect(tab) local c, p, sum = {}, {}, 0 - for i,row in ipairs(tab) do + for i, row in ipairs(tab) do c[i] = string.byte(row[1]) sum = sum + row[2] p[i] = sum =================================================================== > > +end > > + -- Best regards, Sergey Kaplun