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 C52FD15FB928; Fri, 24 Oct 2025 14:03:46 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org C52FD15FB928 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1761303826; bh=b8ixkc3BDw4Kc3WvUQ5lYhiTmdqqK+3AVBlZoMmb6A0=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=JIqMsB/TbXRyUuMuw9QNeL9q4FUuSfZjkm/u8lyssCL/mbwlG2J1dRVB5wVlwtW12 YlQpXC1VVQRiGRQG/SdHaoaXlThCXclE7a6LCHzV6yn0MIcDWOR+gBjY4Plpkfh+0L YBVAqitLchZWbWrCMNOCkhw8wSfNlsvAuES41jYs= Received: from send149.i.mail.ru (send149.i.mail.ru [89.221.237.244]) (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 51F9D15D6582 for ; Fri, 24 Oct 2025 13:55:25 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 51F9D15D6582 Received: by exim-smtp-855f5997bb-88mr2 with esmtpa (envelope-from ) id 1vCFS7-000000006vv-31kW; Fri, 24 Oct 2025 13:55:24 +0300 To: Sergey Bronnikov Date: Fri, 24 Oct 2025 13:50:30 +0300 Message-ID: <17ef4a5a33c093f30c0b45dcf0833dbf81b75191.1761301736.git.skaplun@tarantool.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9DAB542EDD08389FE0779314785DEDFAB4878520D6E3B052E182A05F538085040C7B505EAE496A9BF3DE06ABAFEAF67057E5FB8CE9049886752E7C6720268728E033FDC616F2E6AF2 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7B114C2C2C20B7E62EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566D857902A848E84F893DA38C9C34A4CB3282EBDC4CF679BDE6DAB1CCBF1F97FDA389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C084ED00A64A654CBE8941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B66EA1BA7CA28B4A74CC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE778B471BB9634AD8A731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A5E0AE5CBD56B346685002B1117B3ED696C3BBC090F69FDAD01A1B8FE1FED62FE8823CB91A9FED034534781492E4B8EEAD69BF13FED57427F1C79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CF8DD34F3E192FC448E6A7310B2E95FDE5850C4D0B293F7872A1D75A38A37B98B1D2D1C8B3CBCE0EE86EB503EC62A3E87F4A3DFB973FEE7C98E2422C6CC32E61FE5DF929918715F8905F4332CA8FE04980913E6812662D5F2A5EAB5682573093F7837F15F2B5E4A70B33F2C28C22F508233FCF178C6DD14203 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVRN2q9QiacRu4PPUT9rhHg0= X-DA7885C5: 5F3D9AAE1F8F9639F255D290C0D534F91B50468B182F749D6C077304014AC7E70CBCE516C811DFE05B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD29895295B4304DF9E11988E4495A63B6E05DACAC672750F97E49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v1 luajit 26/41] perf: adjust revcomp 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 Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" 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. The benchmark input is given by redirecting the corresponding file generated by the `libs/fasta.lua 5e6`. The output from the benchmark is redirected to /dev/null. Checks are skipped since the output is very huge, and it is overkill to store it in the repository. --- perf/LuaJIT-benches/revcomp.lua | 72 +++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 25 deletions(-) diff --git a/perf/LuaJIT-benches/revcomp.lua b/perf/LuaJIT-benches/revcomp.lua index 34fe347b..2b1ffa5c 100644 --- a/perf/LuaJIT-benches/revcomp.lua +++ b/perf/LuaJIT-benches/revcomp.lua @@ -1,3 +1,4 @@ +local bench = require("bench").new(arg) local sub = string.sub iubc = setmetatable({ @@ -9,29 +10,50 @@ iubc = setmetatable({ }, { __index = function(t, s) local r = t[sub(s, 2)]..t[sub(s, 1, 1)]; t[s] = r; return r end }) -local wcode = [=[ -return function(t, n) - if n == 1 then return end - local iubc, sub, write = iubc, string.sub, io.write - local s = table.concat(t, "", 1, n-1) - for i=#s-59,1,-60 do - write(]=] -for i=59,3,-4 do wcode = wcode.."iubc[sub(s, i+"..(i-3)..", i+"..i..")], " end -wcode = wcode..[=["\n") - end - local r = #s % 60 - if r ~= 0 then - for i=r,1,-4 do write(iubc[sub(s, i-3 < 1 and 1 or i-3, i)]) end - write("\n") - end -end -]=] -local writerev = loadstring(wcode)() +local stdout = io.output() -local t, n = {}, 1 -for line in io.lines() do - local c = sub(line, 1, 1) - if c == ">" then writerev(t, n); io.write(line, "\n"); n = 1 - elseif c ~= ";" then t[n] = line; n = n + 1 end -end -writerev(t, n) +bench:add({ + name = "revcomp", + -- The compare with the result output file is inconvenient. + skip_check = true, + setup = function() + io.output("/dev/null") + end, + payload = function() + local wcode = [=[ + return function(t, n) + if n == 1 then return end + local iubc, sub, write = iubc, string.sub, io.write + local s = table.concat(t, "", 1, n-1) + for i=#s-59,1,-60 do + write(]=] + for i=59,3,-4 do wcode = wcode.."iubc[sub(s, i+"..(i-3)..", i+"..i..")], " end + wcode = wcode..[=["\n") + end + local r = #s % 60 + if r ~= 0 then + for i=r,1,-4 do write(iubc[sub(s, i-3 < 1 and 1 or i-3, i)]) end + write("\n") + end + end + ]=] + local writerev = loadstring(wcode)() + + local t, n = {}, 1 + for line in io.lines() do + local c = sub(line, 1, 1) + if c == ">" then writerev(t, n); io.write(line, "\n"); n = 1 + elseif c ~= ";" then t[n] = line; n = n + 1 end + end + writerev(t, n) + -- Repeat operation several times. + io.stdin:seek("set", 0) + end, + teardown = function() + io.output(stdout) + end, + -- Amount of symbols in the input file. + items = 5e6, +}) + +bench:run_and_report() -- 2.51.0