diff --git a/benchmarks.yml b/benchmarks.yml index 827e8285..746f6866 100644 --- a/benchmarks.yml +++ b/benchmarks.yml @@ -116,6 +116,10 @@ getivar: desc: getivar tests the performance of getting instance variable values. category: micro single_file: true +attr_accessor: + desc: attr_accessor tests the performance of getting instance variable values via an attr_accessor imemo. + category: micro + single_file: true keyword_args: desc: keyword_args tests the performance of method calls with keyword arguments. category: micro diff --git a/benchmarks/attr_accessor.rb b/benchmarks/attr_accessor.rb new file mode 100644 index 00000000..83069356 --- /dev/null +++ b/benchmarks/attr_accessor.rb @@ -0,0 +1,41 @@ +require_relative '../harness/loader' + +class TheClass + attr_accessor :levar + + def initialize + @v0 = 1 + @v1 = 2 + @v3 = 3 + @levar = 1 + end + + def 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 + +obj = TheClass.new + +run_benchmark(850) do + obj.get_value_loop +end