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 124AF16BF2CC; Fri, 26 Dec 2025 12:26:53 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 124AF16BF2CC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1766741213; bh=t1fZQBiEo6xPeA2G/GkIiovkXmXh0kl/PaTXTcP4uyA=; 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=QBlkkOdReaa9Kh79WM5nxyoRhMQKwfJRZk5yL4otOcSJLWh2jHcyBmafHkwjvLtYa FLUI7fMzImRpV7q60jzxa4R4a+5YdaN4Aqu5M9k/+cR5EW63B43FY8FCsos4PiQREy /2zp+cnFKa55QDy09500comMVyBg2mfqTtwTcdEM= 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 DE3CF16C658C for ; Fri, 26 Dec 2025 12:18:45 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org DE3CF16C658C Received: by exim-smtp-7b4fb89df9-lft7n with esmtpa (envelope-from ) id 1vZ3y8-000000008Cp-3ilV; Fri, 26 Dec 2025 12:18:45 +0300 To: Sergey Bronnikov Date: Fri, 26 Dec 2025 12:17:48 +0300 Message-ID: <08a795fca1a2e9d431822ab7fc4e459c57e8126d.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: 4F1203BC0FB41BD979975AF0D777FEBD705C26DA7DFA1BE5FABF32B159CC9D93182A05F5380850409DC7F8EDD8C9A69D3DE06ABAFEAF670521225C4AEA8A65ADB4FA2C6BBBE99EF92EB2DA79D556EF8B X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE78C7BFD8663541045EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566657B88B02DF8C8690DEBFF52E48680FF8EDCD39A7D089D1AD999B0CF9FD23972389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C078FCF50C7EAF9C588941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B6F459A8243F1D1D44CC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE778B471BB9634AD8A731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A5C1BBB4CAA68D37B45002B1117B3ED696DEDBC8383112D8C35B6221DB6D7A72AD823CB91A9FED034534781492E4B8EEAD09F854029C6BD0DAC79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659211A3892C405E03B1C43B7EF66A2E89A8A75CBB1A004C6AD73C12CEA9D6B80E45BF73DF3A4D2A608B8341EE9D5BE9A0AF5CF8DBA5C3CB35805D8439B09F6DFF017077AB7290764D26536EB022892E5344C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVdtTL5f5BIXbC1vvBWaqFYI= X-DA7885C5: 152A086729AA0778F255D290C0D534F92142363FD398DB784BB7D4FC7A765D695FB0970D9300BF985B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2FBD11C9D87E86C188700636FE984EBB8A814B8564B1DBA89E49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v2 luajit 17/41] perf: adjust nbody 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/nbody.lua | 133 ++++++++++++++++++++-------------- 1 file changed, 80 insertions(+), 53 deletions(-) diff --git a/perf/LuaJIT-benches/nbody.lua b/perf/LuaJIT-benches/nbody.lua index e0ff8f77..4370b4d7 100644 --- a/perf/LuaJIT-benches/nbody.lua +++ b/perf/LuaJIT-benches/nbody.lua @@ -1,56 +1,18 @@ +-- Benchmark to check the performance of FP arithmetics. +-- It models the orbits of Jovian planets, using the simple +-- symplectic-integrator. +-- For the details see: +-- https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/nbody.html + +local bench = require("bench").new(arg) local sqrt = math.sqrt local PI = 3.141592653589793 local SOLAR_MASS = 4 * PI * PI local DAYS_PER_YEAR = 365.24 -local bodies = { - { -- Sun - x = 0, - y = 0, - z = 0, - vx = 0, - vy = 0, - vz = 0, - mass = SOLAR_MASS - }, - { -- Jupiter - x = 4.84143144246472090e+00, - y = -1.16032004402742839e+00, - z = -1.03622044471123109e-01, - vx = 1.66007664274403694e-03 * DAYS_PER_YEAR, - vy = 7.69901118419740425e-03 * DAYS_PER_YEAR, - vz = -6.90460016972063023e-05 * DAYS_PER_YEAR, - mass = 9.54791938424326609e-04 * SOLAR_MASS - }, - { -- Saturn - x = 8.34336671824457987e+00, - y = 4.12479856412430479e+00, - z = -4.03523417114321381e-01, - vx = -2.76742510726862411e-03 * DAYS_PER_YEAR, - vy = 4.99852801234917238e-03 * DAYS_PER_YEAR, - vz = 2.30417297573763929e-05 * DAYS_PER_YEAR, - mass = 2.85885980666130812e-04 * SOLAR_MASS - }, - { -- Uranus - x = 1.28943695621391310e+01, - y = -1.51111514016986312e+01, - z = -2.23307578892655734e-01, - vx = 2.96460137564761618e-03 * DAYS_PER_YEAR, - vy = 2.37847173959480950e-03 * DAYS_PER_YEAR, - vz = -2.96589568540237556e-05 * DAYS_PER_YEAR, - mass = 4.36624404335156298e-05 * SOLAR_MASS - }, - { -- Neptune - x = 1.53796971148509165e+01, - y = -2.59193146099879641e+01, - z = 1.79258772950371181e-01, - vx = 2.68067772490389322e-03 * DAYS_PER_YEAR, - vy = 1.62824170038242295e-03 * DAYS_PER_YEAR, - vz = -9.51592254519715870e-05 * DAYS_PER_YEAR, - mass = 5.15138902046611451e-05 * SOLAR_MASS - } -} +local bodies +local nbody local function advance(bodies, nbody, dt) for i=1,nbody do @@ -110,10 +72,75 @@ local function offsetMomentum(b, nbody) b[1].vz = -pz / SOLAR_MASS end -local N = tonumber(arg and arg[1]) or 1000 -local nbody = #bodies +local DEFAULT_N = 5e6 +local N = tonumber(arg and arg[1]) or DEFAULT_N + +bench:add({ + name = "nbody", + payload = function() + bodies = { + { -- Sun + x = 0, + y = 0, + z = 0, + vx = 0, + vy = 0, + vz = 0, + mass = SOLAR_MASS + }, + { -- Jupiter + x = 4.84143144246472090e+00, + y = -1.16032004402742839e+00, + z = -1.03622044471123109e-01, + vx = 1.66007664274403694e-03 * DAYS_PER_YEAR, + vy = 7.69901118419740425e-03 * DAYS_PER_YEAR, + vz = -6.90460016972063023e-05 * DAYS_PER_YEAR, + mass = 9.54791938424326609e-04 * SOLAR_MASS + }, + { -- Saturn + x = 8.34336671824457987e+00, + y = 4.12479856412430479e+00, + z = -4.03523417114321381e-01, + vx = -2.76742510726862411e-03 * DAYS_PER_YEAR, + vy = 4.99852801234917238e-03 * DAYS_PER_YEAR, + vz = 2.30417297573763929e-05 * DAYS_PER_YEAR, + mass = 2.85885980666130812e-04 * SOLAR_MASS + }, + { -- Uranus + x = 1.28943695621391310e+01, + y = -1.51111514016986312e+01, + z = -2.23307578892655734e-01, + vx = 2.96460137564761618e-03 * DAYS_PER_YEAR, + vy = 2.37847173959480950e-03 * DAYS_PER_YEAR, + vz = -2.96589568540237556e-05 * DAYS_PER_YEAR, + mass = 4.36624404335156298e-05 * SOLAR_MASS + }, + { -- Neptune + x = 1.53796971148509165e+01, + y = -2.59193146099879641e+01, + z = 1.79258772950371181e-01, + vx = 2.68067772490389322e-03 * DAYS_PER_YEAR, + vy = 1.62824170038242295e-03 * DAYS_PER_YEAR, + vz = -9.51592254519715870e-05 * DAYS_PER_YEAR, + mass = 5.15138902046611451e-05 * SOLAR_MASS + } + } + nbody = #bodies + + offsetMomentum(bodies, nbody) + + assert(energy(bodies, nbody) == -0.16907516382852447179, + "Correct start energy") + for _ = 1, N do advance(bodies, nbody, 0.01) end + end, + checker = function() + if N == DEFAULT_N then + assert(energy(bodies, nbody) == -0.16908313397890917251, + "Correct result energy") + end + return true + end, + items = N, +}) -offsetMomentum(bodies, nbody) -io.write( string.format("%0.9f",energy(bodies, nbody)), "\n") -for i=1,N do advance(bodies, nbody, 0.01) end -io.write( string.format("%0.9f",energy(bodies, nbody)), "\n") +bench:run_and_report() -- 2.52.0