Skip to content

Commit e43471e

Browse files
authored
Add new benchmark for getivar with T_CLASS and T_MODULE (#449)
1 parent 59333fb commit e43471e

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

benchmarks.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ getivar:
170170
category: micro
171171
single_file: true
172172
ractor: true
173+
getivar-module:
174+
desc: getivar tests the performance of getting instance variable values from modules.
175+
category: micro
176+
single_file: true
177+
ractor: true
173178
structaref:
174179
desc: structaref tests the performance of getting Struct members
175180
category: micro

benchmarks/getivar-module.rb

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
require_relative '../harness/loader'
2+
3+
class TheClass
4+
@v0 = 1
5+
@v1 = 2
6+
@v2 = 3
7+
@levar = 1
8+
9+
def self.get_value_loop
10+
sum = 0
11+
12+
# 1M
13+
i = 0
14+
while i < 1000000
15+
# 10 times to de-emphasize loop overhead
16+
sum += @levar
17+
sum += @levar
18+
sum += @levar
19+
sum += @levar
20+
sum += @levar
21+
sum += @levar
22+
sum += @levar
23+
sum += @levar
24+
sum += @levar
25+
sum += @levar
26+
i += 1
27+
end
28+
29+
return sum
30+
end
31+
end
32+
33+
module TheModule
34+
@v0 = 1
35+
@v1 = 2
36+
@v2 = 3
37+
@levar = 1
38+
39+
def self.get_value_loop
40+
sum = 0
41+
42+
# 1M
43+
i = 0
44+
while i < 1000000
45+
# 10 times to de-emphasize loop overhead
46+
sum += @levar
47+
sum += @levar
48+
sum += @levar
49+
sum += @levar
50+
sum += @levar
51+
sum += @levar
52+
sum += @levar
53+
sum += @levar
54+
sum += @levar
55+
sum += @levar
56+
i += 1
57+
end
58+
59+
return sum
60+
end
61+
end
62+
63+
run_benchmark(850) do
64+
TheClass.get_value_loop
65+
TheModule.get_value_loop
66+
end

0 commit comments

Comments
 (0)