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 9E2E115D6587; Fri, 24 Oct 2025 13:57:45 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 9E2E115D6587 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1761303465; bh=2JkBUMzETvbLKeo/QNijrJsr7xMaWzze124n33Qo25g=; 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=chM5a1kVVIF9MtguvzHAAHpkIL05EvyzvttjhWPGULcAH9R+lPZBukvYW2Ww5R2RV XqUAWbVByvoij702FyDwmq98Iqg8xW/AA/w1Mg34v7nWbuwIY3ChBDjD1kaCOmDk+F Da7Nt2FHAwng3lCkYQMgpMdpfxf8pp9ZfBWKblCs= Received: from send150.i.mail.ru (send150.i.mail.ru [89.221.237.245]) (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 06B1E15F7CC0 for ; Fri, 24 Oct 2025 13:51:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 06B1E15F7CC0 Received: by exim-smtp-855f5997bb-88mr2 with esmtpa (envelope-from ) id 1vCFNu-000000006vv-469o; Fri, 24 Oct 2025 13:51:03 +0300 To: Sergey Bronnikov Date: Fri, 24 Oct 2025 13:50:18 +0300 Message-ID: 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: 4F1203BC0FB41BD9DAB542EDD08389FE833E591919D8B10BEBBEC9A01E36940B182A05F5380850402C579C832FC82F603DE06ABAFEAF67057340E20D4190704552E7C6720268728E46E64777A2DC5D73 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE76D24A1449B9F25A2EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566D857902A848E84F85F72D8F99F5B0D99282EBDC4CF679BDEB2859901BEC9808F389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C06030C3405640F6718941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B6D6FBC3EC642A93BBCC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE74815913FF2B4FA25731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A5A3096639380D669D5002B1117B3ED696ECBB6B0963A87C3E9E040399BDE4761E823CB91A9FED034534781492E4B8EEAD27E9584FBD6BDD31C79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CF7F7B9770298353E2C8DBF5E1B8C779D26810426BD25B9920A3602C54B94DA67717059C39C4D662426EB503EC62A3E87F9A4C7C31E9827C59E2422C6CC32E61FE81C582880776080E5F4332CA8FE04980913E6812662D5F2A5EAB5682573093F7837F15F2B5E4A70B33F2C28C22F508233FCF178C6DD14203 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVRN2q9QiacRuO97GPMOqnhM= X-DA7885C5: 5B978E15ABC1041BF255D290C0D534F9FF8F433907A176722E1A6349602BE3F1787C61C4A314E6725B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2DE518A5B393377BC11988E4495A63B6E13C01FBE8E4AA23FE49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v1 luajit 14/41] perf: adjust mandelbrot 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 output is redirected to /dev/null. The check is skipped since it is very inconvenient to check the binary output, especially since it may be configured by the parameter. --- perf/LuaJIT-benches/mandelbrot.lua | 64 +++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/perf/LuaJIT-benches/mandelbrot.lua b/perf/LuaJIT-benches/mandelbrot.lua index 0ef595a2..51e0dd4f 100644 --- a/perf/LuaJIT-benches/mandelbrot.lua +++ b/perf/LuaJIT-benches/mandelbrot.lua @@ -1,23 +1,49 @@ +local bench = require("bench").new(arg) -local write, char, unpack = io.write, string.char, unpack -local N = tonumber(arg and arg[1]) or 100 -local M, ba, bb, buf = 2/N, 2^(N%8+1)-1, 2^(8-N%8), {} -write("P4\n", N, " ", N, "\n") -for y=0,N-1 do - local Ci, b, p = y*M-1, 1, 0 - for x=0,N-1 do - local Cr = x*M-1.5 - local Zr, Zi, Zrq, Ziq = Cr, Ci, Cr*Cr, Ci*Ci - b = b + b - for i=1,49 do - Zi = Zr*Zi*2 + Ci - Zr = Zrq-Ziq + Cr - Ziq = Zi*Zi - Zrq = Zr*Zr - if Zrq+Ziq > 4.0 then b = b + 1; break; end +local N = tonumber(arg and arg[1]) or 5000 + +local function payload() + -- These functions must not be an upvalue but the stack slot. + local N = N + local write, char, unpack = io.write, string.char, unpack + local M, ba, bb, buf = 2/N, 2^(N%8+1)-1, 2^(8-N%8), {} + write("P4\n", N, " ", N, "\n") + for y=0,N-1 do + local Ci, b, p = y*M-1, 1, 0 + for x=0,N-1 do + local Cr = x*M-1.5 + local Zr, Zi, Zrq, Ziq = Cr, Ci, Cr*Cr, Ci*Ci + b = b + b + for i=1,49 do + Zi = Zr*Zi*2 + Ci + Zr = Zrq-Ziq + Cr + Ziq = Zi*Zi + Zrq = Zr*Zr + if Zrq+Ziq > 4.0 then b = b + 1; break; end + end + if b >= 256 then p = p + 1; buf[p] = 511 - b; b = 1; end end - if b >= 256 then p = p + 1; buf[p] = 511 - b; b = 1; end + if b ~= 1 then p = p + 1; buf[p] = (ba-b)*bb; end + write(char(unpack(buf, 1, p))) end - if b ~= 1 then p = p + 1; buf[p] = (ba-b)*bb; end - write(char(unpack(buf, 1, p))) end + +local stdout = io.output() + +bench:add({ + name = "mandelbrot", + items = N, + -- XXX: This is inconvenient to have the binary file in the + -- repository for the comparison. If the check is needed run, + -- the payload manually. + skip_check = true, + setup = function() + io.output("/dev/null") + end, + teardown = function() + io.output(stdout) + end, + payload = payload, +}) + +bench:run_and_report() -- 2.51.0