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 69A4516AFFD4; Fri, 26 Dec 2025 12:22:52 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 69A4516AFFD4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1766740972; bh=jOKtFeTWMw27fBOCkU9BCjmsXm9UabAl5ZJK3nBM5Jk=; 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=ovBVmGZDmQMOUdmFPICsI9EfYU0eyX7JnpO/Ii4COsa4LYYzoaulszmBao327RIr2 1Zi9z5RFAnnbIWbDPJePYE2gYspg3iCpxANt+LVzDvC4SqY4/2l8xfwlzuFrnwsQJh Rr5pIPLhhNCQLd3WN3ABpg7lgFu1DcwZDOtxbtSw= Received: from send240.i.mail.ru (send240.i.mail.ru [95.163.59.79]) (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 AFC7B16C6583 for ; Fri, 26 Dec 2025 12:18:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org AFC7B16C6583 Received: by exim-smtp-7b4fb89df9-lft7n with esmtpa (envelope-from ) id 1vZ3xt-000000008Cp-2fMS; Fri, 26 Dec 2025 12:18:30 +0300 To: Sergey Bronnikov Date: Fri, 26 Dec 2025 12:17:40 +0300 Message-ID: <1fa15638dd1db8690aa5f91cc80d9331f54c842f.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: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD979975AF0D777FEBD705C26DA7DFA1BE5C83EDDE7B55BBC1E182A05F538085040004F3B615FF985DA3DE06ABAFEAF670595AC1BA19FA08677B4FA2C6BBBE99EF9ACCB5262BB501CA2 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE70CB15FA6C489297DEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566657B88B02DF8C8697EA64E6249C93D9F8EDCD39A7D089D1A58CA5CA47C5414E7389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C078FCF50C7EAF9C588941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B636DA1BED736F9328CC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE79E9721B410A3B6ED731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A5CDBFEDFA7DE28DED5002B1117B3ED6965395E6219554ACA21E49B01306B5E3AD823CB91A9FED034534781492E4B8EEAD47A3109F1ACFD409C79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659997262DF35FE8F7E718DF647AC641B01124429728F86140AAE68AFF659A30648C5E6C65AB8FC05A6B8341EE9D5BE9A0A6F5EEFCA1E444D9505D8439B09F6DFF067D6AB72FBA72CC06536EB022892E5344C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVdtTL5f5BIXbRwQiCDB0iKI= X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD23E57D17FC0C41D318700636FE984EBB8F02B9E10EF4E6E3BE49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v2 luajit 09/41] perf: adjust fannkuch 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/fannkuch.lua | 44 +++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/perf/LuaJIT-benches/fannkuch.lua b/perf/LuaJIT-benches/fannkuch.lua index 2a4cd426..f51e0eaf 100644 --- a/perf/LuaJIT-benches/fannkuch.lua +++ b/perf/LuaJIT-benches/fannkuch.lua @@ -1,3 +1,11 @@ +-- The benchmark that checks the performance of operations on +-- small integers and vectors of integers and the performance of +-- inner loops of the benchmark. The benchmark finds the maximum +-- number of flips in the table needed for any permutation. +-- For the details see: +-- https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/fannkuchredux.html + +local bench = require("bench").new(arg) local function fannkuch(n) local p, q, s, odd, check, maxflips = {}, {}, {}, true, 0, 0 @@ -6,7 +14,6 @@ local function fannkuch(n) -- Print max. 30 permutations. if check < 30 then if not p[n] then return maxflips end -- Catch n = 0, 1, 2. - io.write(unpack(p)); io.write("\n") check = check + 1 end -- Copy and flip. @@ -46,5 +53,36 @@ local function fannkuch(n) until false end -local n = tonumber(arg and arg[1]) or 1 -io.write("Pfannkuchen(", n, ") = ", fannkuch(n), "\n") +local n = tonumber(arg and arg[1]) or 11 + +-- Precomputed numbers taken from "Performing Lisp Analysis of the +-- FANNKUCH Benchmark": +-- https://dl.acm.org/doi/pdf/10.1145/382109.382124 +local FANNKUCH = { 0, 1, 2, 4, 7, 10, 16, 22, 30, 38, 51, 65, 80 } + +local function factorial(n) + local fact = 1 + for i = 2, n do + fact = fact * i + end + return fact +end + +bench:add({ + name = "fannkuch", + payload = function() + return fannkuch(n) + end, + checker = function(res) + if n > #FANNKUCH then + -- Not precomputed, so can't check. + return true + else + return res == FANNKUCH[n] + end + end, + -- Assume that we count permutations here. + items = factorial(n), +}) + +bench:run_and_report() -- 2.52.0