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 DCDA816AFFC1; Fri, 26 Dec 2025 12:22:22 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org DCDA816AFFC1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1766740943; bh=U7c986NXoxYGyAMHyZhe7Lthld4oWAiwWg1N9FgKL9A=; 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=pgEkcHefgcxjpOvDMja+p1HpkwZOk1ztreVssfFYpdtb6thWl4kc75k7Oa4WMqumQ mlgsSfYzn7XSZYD5D84Ild25xmzhGx+XaXRsDujq9TYAsq6k2fkdVidn5sU6PfAFDS 6mvk5EXAAKiO3HqweOYj6tC7872scsKhiy0PQ1PI= Received: from send82.i.mail.ru (send82.i.mail.ru [89.221.237.177]) (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 5768C16C6582 for ; Fri, 26 Dec 2025 12:18:29 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 5768C16C6582 Received: by exim-smtp-7b4fb89df9-lft7n with esmtpa (envelope-from ) id 1vZ3xs-000000008Cp-18qQ; Fri, 26 Dec 2025 12:18:28 +0300 To: Sergey Bronnikov Date: Fri, 26 Dec 2025 12:17:39 +0300 Message-ID: <388c8793a03f3a9bf0dbe4f4f8fde40687c4573f.1766738771.git.skaplun@tarantool.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD979975AF0D777FEBD9A7AA89612843F49E05A58644225EC05182A05F5380850401F77AAB4871A5F653DE06ABAFEAF670536ABB2613406A047B4FA2C6BBBE99EF9CAD80AB92358092F X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7A8325FA649D0A450EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566657B88B02DF8C869D06A8E230394CAFC8EDCD39A7D089D1A7FC0CCD7A0615AE4389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C0DCF4F0DC832992758941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B6D6FBC3EC642A93BBCC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE79E9721B410A3B6ED731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A567C8F5DC35AB31465002B1117B3ED696D894160E26569789B74D9144D44E4FCF823CB91A9FED034534781492E4B8EEAD2B25D9E4C92BC8ACC79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659FD3E256C142CB16C2B51291AB70D56DE568DC8C400806B0F565FACFA62FE88870AFA9EBF98BC32F4B8341EE9D5BE9A0ABAE5D07890E2C38205D8439B09F6DFF0457E919DF3E172936536EB022892E5344C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVdtTL5f5BIXbVP5HnfTow68= X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2726C1423035B46A18700636FE984EBB8BFC2300847262C66E49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v2 luajit 08/41] perf: adjust euler14-bit 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. --- perf/LuaJIT-benches/euler14-bit.lua | 65 ++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/perf/LuaJIT-benches/euler14-bit.lua b/perf/LuaJIT-benches/euler14-bit.lua index 537f2bf3..c4ae3713 100644 --- a/perf/LuaJIT-benches/euler14-bit.lua +++ b/perf/LuaJIT-benches/euler14-bit.lua @@ -1,22 +1,55 @@ +-- The benchmark to check the performance of bitwise operations. +-- It finds the longest Collatz sequence using bitwise arithmetic. +-- For the details see: +-- https://projecteuler.net/problem=14 + +local bench = require("bench").new(arg) local bit = require("bit") local bnot, bor, band = bit.bnot, bit.bor, bit.band local shl, shr = bit.lshift, bit.rshift -local N = tonumber(arg and arg[1]) or 10000000 -local cache, m, n = { 1 }, 1, 1 -if arg and arg[2] then cache = nil end -for i=2,N do - local j = i - for len=1,1000000000 do - j = bor(band(shr(j,1), band(j,1)-1), band(shl(j,1)+j+1, bnot(band(j,1)-1))) - if cache then - local x = cache[j]; if x then j = x+len; break end - elseif j == 1 then - j = len+1; break +local DEFAULT_N = 2e7 +local N = tonumber(arg and arg[1]) or DEFAULT_N +local drop_cache = arg and arg[2] + +bench:add({ + name = "euler14_bit", + payload = function() + local cache, m, n = { 1 }, 1, 1 + if drop_cache then cache = nil end + for i = 2, N do + local j = i + for len = 1, 1000000000 do + j = bor( + band(shr(j, 1), band(j, 1) - 1), + band(shl(j, 1) + j + 1, bnot(band(j, 1) - 1)) + ) + if cache then + local x = cache[j] + if x then + j = x + len + break + end + elseif j == 1 then + j = len + 1 + break + end + end + if cache then cache[i] = j end + if j > m then m, n = j, i end end - end - if cache then cache[i] = j end - if j > m then m, n = j, i end -end -io.write("Found ", n, " (chain length: ", m, ")\n") + return {n = n, m = m} + end, + checker = function(res) + if N ~= DEFAULT_N then + -- Test only for the default. + return true + else + return res.n == 18064027 and res.m == 623 + end + end, + items = N, +}) + +bench:run_and_report() -- 2.52.0