Skip to content

Commit 7d9ead5

Browse files
committed
Add struct aref benchmark
1 parent 9bb044b commit 7d9ead5

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

benchmarks.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ getivar:
152152
category: micro
153153
single_file: true
154154
ractor: true
155+
structaref:
156+
desc: structaref tests the performance of getting struct members
157+
category: micro
158+
single_file: true
155159
keyword_args:
156160
desc: keyword_args tests the performance of method calls with keyword arguments.
157161
category: micro

benchmarks/structaref.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
require_relative '../harness/loader'
2+
3+
TheClass = Struct.new(:v0, :v1, :v2, :levar)
4+
5+
def get_value_loop obj
6+
sum = 0
7+
# 1M
8+
i = 0
9+
while i < 1000000
10+
# 10 times to de-emphasize loop overhead
11+
sum += obj.levar
12+
sum += obj.levar
13+
sum += obj.levar
14+
sum += obj.levar
15+
sum += obj.levar
16+
sum += obj.levar
17+
sum += obj.levar
18+
sum += obj.levar
19+
sum += obj.levar
20+
sum += obj.levar
21+
i += 1
22+
end
23+
24+
return sum
25+
end
26+
27+
obj = TheClass.new(1, 2, 3, 1)
28+
29+
run_benchmark(850) do
30+
get_value_loop obj
31+
end

0 commit comments

Comments
 (0)