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 4806B15D6595; Fri, 24 Oct 2025 13:56:16 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 4806B15D6595 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1761303376; bh=OpVQcBm2BceSSFbQ8Kh2LyVZXdyjfSzCfckBG1n13zY=; 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=sI3MIj+RLHRtKVd8JTiU3+sUp3VVBxjRT6a/tdkrUQAvwGbiY3VnoWXKvK/QkprDt PrgzzUcx1R0cWSU5MSu0gUDmvIYhuixzQI3rtrcj7rD2rSA/iBkK3xRYMnq7H6TipY vdDRAvDNzcU0lT01JNYt2klXBYMWgPNiQhKJ4MYI= Received: from send126.i.mail.ru (send126.i.mail.ru [89.221.237.221]) (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 927F015B0A79 for ; Fri, 24 Oct 2025 13:50:58 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 927F015B0A79 Received: by exim-smtp-855f5997bb-88mr2 with esmtpa (envelope-from ) id 1vCFNp-000000006vv-2pC2; Fri, 24 Oct 2025 13:50:58 +0300 To: Sergey Bronnikov Date: Fri, 24 Oct 2025 13:50:15 +0300 Message-ID: <30a168f9cbe4c5476f274f3e20b56511ca5c3f8d.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: 4F1203BC0FB41BD9DAB542EDD08389FE5747FF4E83FD1C179EDF99FC6F4B40A8182A05F5380850400568067AD79BDB5B3DE06ABAFEAF67059CFCBE00597AFB2652E7C6720268728E6D23E71EDBFF0DC9 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE72F22E6DC541F75D9EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566D857902A848E84F8EC4415F9F43F840A282EBDC4CF679BDE3A103625B0BDD870389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C07734D68A6916D8318941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B6BAA8CD687FCDB2EBCC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE74815913FF2B4FA25731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A527672FB03C0664215002B1117B3ED69676A9098D7B32124AE99897350C7C491E823CB91A9FED034534781492E4B8EEAD3B90412627F530F9A71A35648BE338CE9510FB958DCE06DB58C12E6D310A6D53A16EC4B4EECACEB3 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CF23E564D814633D165F2145E289B2523E822B96D2D6404C9B386F6D04E229D7E3963129249CAA680A6EB503EC62A3E87F521D11206B44D84BE2422C6CC32E61FEEF2F3EE52D3F706A5F4332CA8FE04980913E6812662D5F2A5EAB5682573093F7837F15F2B5E4A70B33F2C28C22F508233FCF178C6DD14203 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVRN2q9QiacRunKHV662syMo= X-DA7885C5: 621F3EB8F5F9C727F255D290C0D534F981A10EC08943F44C85DDD3805A2E4DBD84AB657BDB94C4BD5B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD23AD16A0348D7868911988E4495A63B6E99DA0434F5C6CF8BE49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v1 luajit 11/41] perf: adjust k-nucleotide 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. All checks are done by the comparison with the precomputed values for the aforementioned file. --- perf/LuaJIT-benches/k-nucleotide.lua | 93 ++++++++++++++++++++++++---- 1 file changed, 82 insertions(+), 11 deletions(-) diff --git a/perf/LuaJIT-benches/k-nucleotide.lua b/perf/LuaJIT-benches/k-nucleotide.lua index 0bfb41be..ae51dae9 100644 --- a/perf/LuaJIT-benches/k-nucleotide.lua +++ b/perf/LuaJIT-benches/k-nucleotide.lua @@ -1,3 +1,4 @@ +local bench = require('bench').new(arg) local function kfrequency(seq, freq, k, frame) local sub = string.sub @@ -12,7 +13,8 @@ local function count(seq, frag) local k = #frag local freq = {} for frame=1,k do kfrequency(seq, freq, k, frame) end - io.write(freq[frag] or 0, "\t", frag, "\n") + return freq[frag] + -- io.write(freq[frag] or 0, "\t", frag, "\n") end local function frequency(seq, k) @@ -24,10 +26,13 @@ local function frequency(seq, k) local fa, fb = freq[a], freq[b] return fa == fb and a > b or fa > fb end) + local res = {} for _,c in ipairs(sfreq) do - io.write(string.format("%s %0.3f\n", c, (freq[c]*100)/sum)) + -- io.write(string.format("%s %0.3f\n", c, (freq[c]*100)/sum)) + res[c] = freq[c]*100/sum end - io.write("\n") + -- io.write("\n") + return res end local function readseq() @@ -48,11 +53,77 @@ local function readseq() return string.upper(table.concat(lines, "", 1, ln)) end -local seq = readseq() -frequency(seq, 1) -frequency(seq, 2) -count(seq, "GGT") -count(seq, "GGTA") -count(seq, "GGTATT") -count(seq, "GGTATTTTAATT") -count(seq, "GGTATTTTAATTTATAGT") +local function check_freq(res, expected) + for k,v in pairs(expected) do + assert(string.format("%0.3f", res[k]) == v, + "Incorrect frequency for fragment " .. k) + end +end + +-- The input is generated by `fasta.lua 5e6'. The check function +-- is corresponding. +local N = 5e6 +-- See for the details. +local items = N * 5 +bench:add({ + name = "k_nucleotide", + payload = function() + local seq = readseq() + local sfreq1 = frequency(seq, 1) + local sfreq2 = frequency(seq, 2) + local GGT = count(seq, "GGT") + local GGTA = count(seq, "GGTA") + local GGTATT = count(seq, "GGTATT") + local GGTATTTTAATT = count(seq, "GGTATTTTAATT") + local GGTATTTTAATTTATAGT = count(seq, "GGTATTTTAATTTATAGT") + + local res = { + sfreq1 = sfreq1, + sfreq2 = sfreq2, + GGT = GGT, + GGTA = GGTA, + GGTATT = GGTATT, + GGTATTTTAATT = GGTATTTTAATT, + GGTATTTTAATTTATAGT = GGTATTTTAATTTATAGT, + } + -- XXX: Reset input for the non-check iteration. + io.stdin:seek("set", 0) + return res + end, + checker = function(res) + check_freq(res.sfreq1, { + A = "30.296", + T = "30.149", + C = "19.800", + G = "19.754", + }) + check_freq(res.sfreq2, { + AA = "9.177", + TA = "9.132", + AT = "9.130", + TT = "9.091", + CA = "6.002", + AC = "6.001", + AG = "5.987", + GA = "5.984", + CT = "5.971", + TC = "5.971", + GT = "5.957", + TG = "5.956", + CC = "3.917", + GC = "3.911", + CG = "3.909", + GG = "3.902", + }) + + assert(res.GGT == 294331) + assert(res.GGTA == 89290) + assert(res.GGTATT == 9462) + assert(res.GGTATTTTAATT == 178) + assert(res.GGTATTTTAATTTATAGT == 178) + return true + end, + items = items, +}) + +bench:run_and_report() -- 2.51.0