From d3add2724c84d5d6182049423aad351b48be671f Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Tue, 25 Nov 2025 15:11:53 -0800 Subject: [PATCH 1/3] Add new benchmark for getivar with T_CLASS and T_MODULE --- benchmarks.yml | 5 +++ benchmarks/getivar-module.rb | 66 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 benchmarks/getivar-module.rb diff --git a/benchmarks.yml b/benchmarks.yml index a8e980e6..7c0297d6 100644 --- a/benchmarks.yml +++ b/benchmarks.yml @@ -170,6 +170,11 @@ getivar: category: micro single_file: true ractor: true +getivar-module: + desc: getivar tests the performance of getting instance variable values from modules. + category: micro + single_file: true + ractor: true structaref: desc: structaref tests the performance of getting Struct members category: micro diff --git a/benchmarks/getivar-module.rb b/benchmarks/getivar-module.rb new file mode 100644 index 00000000..e99930a2 --- /dev/null +++ b/benchmarks/getivar-module.rb @@ -0,0 +1,66 @@ +require_relative '../harness/loader' + +class TheClass + @v0 = 1 + @v1 = 2 + @v2 = 3 + @levar = 1 + + def self.get_value_loop + sum = 0 + + # 1M + i = 0 + while i < 1000000 + # 10 times to de-emphasize loop overhead + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + i += 1 + end + + return sum + end +end + +module TheModule + @v0 = 1 + @v1 = 2 + @v2 = 3 + @levar = 1 + + def self.get_value_loop + sum = 0 + + # 1M + i = 0 + while i < 1000000 + # 10 times to de-emphasize loop overhead + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + sum += @levar + i += 1 + end + + return sum + end +end + +run_benchmark(850) do + TheClass.get_value_loop + TheModule.get_value_loop +end From 80fd929938d1543e189c2019cedeb35470044144 Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Tue, 25 Nov 2025 15:17:39 -0800 Subject: [PATCH 2/3] . --- benchmarks.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmarks.yml b/benchmarks.yml index 7c0297d6..2cead388 100644 --- a/benchmarks.yml +++ b/benchmarks.yml @@ -174,7 +174,6 @@ getivar-module: desc: getivar tests the performance of getting instance variable values from modules. category: micro single_file: true - ractor: true structaref: desc: structaref tests the performance of getting Struct members category: micro From e1a2ac1f6d88299c879fd0e4a55a8430fd57f459 Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Mon, 1 Dec 2025 12:07:33 -0800 Subject: [PATCH 3/3] Enable in ractor mode --- benchmarks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmarks.yml b/benchmarks.yml index 2cead388..7c0297d6 100644 --- a/benchmarks.yml +++ b/benchmarks.yml @@ -174,6 +174,7 @@ getivar-module: desc: getivar tests the performance of getting instance variable values from modules. category: micro single_file: true + ractor: true structaref: desc: structaref tests the performance of getting Struct members category: micro