[Tarantool-patches] [PATCH v1 luajit 07/41] perf: adjust coroutine-ring in LuaJIT-benches

Sergey Bronnikov sergeyb at tarantool.org
Thu Nov 13 14:17:20 MSK 2025


Hi, Sergey!

thanks for the patch! See my comments.

Sergey

On 10/24/25 13:50, Sergey Kaplun wrote:
> This patch adjusts the aforementioned test to use the benchmark
> framework introduced before. The default arguments are adjusted
> according to the <PARAM_x86.txt> file. The arguments to the script still
> can be provided in the command line run.
> ---
>   perf/LuaJIT-benches/coroutine-ring.lua | 45 ++++++++++++++++----------
>   1 file changed, 28 insertions(+), 17 deletions(-)
>
> diff --git a/perf/LuaJIT-benches/coroutine-ring.lua b/perf/LuaJIT-benches/coroutine-ring.lua
> index 1e8c5ef6..1b86a5ba 100644
> --- a/perf/LuaJIT-benches/coroutine-ring.lua
> +++ b/perf/LuaJIT-benches/coroutine-ring.lua
> @@ -1,3 +1,5 @@
> +local bench = require("bench").new(arg)
> +
>   -- The Computer Language Benchmarks Game
>   --http://shootout.alioth.debian.org/
>   -- contributed by Sam Roberts
> @@ -7,7 +9,6 @@ local n         = tonumber(arg and arg[1]) or 2e7
>   
>   -- fixed size pool
>   local poolsize  = 503
> -local threads   = {}
>   
>   -- cache these to avoid global environment lookups
>   local create    = coroutine.create
> @@ -15,7 +16,6 @@ local resume    = coroutine.resume
>   local yield     = coroutine.yield
>   
>   local id        = 1
> -local token     = 0
>   local ok
>   
>   local body = function(token)
> @@ -24,19 +24,30 @@ local body = function(token)
>     end
>   end
>   
> --- create all threads
> -for id = 1, poolsize do
> -  threads[id] = create(body)
> -end
> -
> --- send the token
> -repeat
> -  if id == poolsize then
> -    id = 1
> -  else
> -    id = id + 1
> -  end
> -  ok, token = resume(threads[id], token)
> -until token == n
> +bench:add({
> +  name = "coroutine_ring",
> +  payload = function()
> +    local token     = 0
a single whitespace before "="
> +    -- create all threads
First letter is in uppercase and a dot at the end.
> +    local threads   = {}
a single whitespace before "="
> +    for id = 1, poolsize do
> +      threads[id] = create(body)
> +    end
> +
> +    -- send the token
First letter is in uppercase and a dot at the end.
> +    repeat
> +      if id == poolsize then
> +        id = 1
> +      else
> +        id = id + 1
> +      end
> +      ok, token = resume(threads[id], token)
> +    until token == n
> +    return id
> +  end,
> +  checker = function(id) return id == (n % poolsize + 1) end,
> +  items = n,
> +})
> +
> +bench:run_and_report()
>   
> -io.write(id, "\n")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20251113/44c8b23b/attachment.htm>


More information about the Tarantool-patches mailing list