Skip to content

Commit 38ae783

Browse files
committed
Add attr_accessor benchmark
1 parent 254e8e3 commit 38ae783

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

benchmarks.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ getivar:
116116
desc: getivar tests the performance of getting instance variable values.
117117
category: micro
118118
single_file: true
119+
attr_accessor:
120+
desc: attr_accessor tests the performance of getting instance variable values via an attr_accessor imemo.
121+
category: micro
122+
single_file: true
119123
keyword_args:
120124
desc: keyword_args tests the performance of method calls with keyword arguments.
121125
category: micro

benchmarks/attr_accessor.rb

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

0 commit comments

Comments
 (0)