diff options
author | Jemma Issroff <jemmaissroff@gmail.com> | 2022-09-14 16:48:40 -0400 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2022-09-14 13:50:47 -0700 |
commit | 513a11b477bb334413452b6004bc7d2d0a3eed4f (patch) | |
tree | 533171caf28e14646a348a6790fd68d8e7bdcab6 /benchmark | |
parent | f98d6d3f389e8e46775c5895ddc1a3eec4544533 (diff) |
Add vm_ivar get, get_unitialized, and lazy_set benchmarks
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6376
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/vm_ivar_get.yml | 37 | ||||
-rw-r--r-- | benchmark/vm_ivar_get_unintialized.yml | 12 | ||||
-rw-r--r-- | benchmark/vm_ivar_lazy_set.yml | 12 |
3 files changed, 61 insertions, 0 deletions
diff --git a/benchmark/vm_ivar_get.yml b/benchmark/vm_ivar_get.yml new file mode 100644 index 0000000000..8c64ffc77a --- /dev/null +++ b/benchmark/vm_ivar_get.yml @@ -0,0 +1,37 @@ +prelude: | + class Example + def initialize + @v0 = 1 + @v1 = 2 + @v3 = 3 + @levar = 1 + end + + def get_value_loop + sum = 0 + + 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 = Example.new +benchmark: + vm_ivar_get: | + obj.get_value_loop +loop_count: 100 diff --git a/benchmark/vm_ivar_get_unintialized.yml b/benchmark/vm_ivar_get_unintialized.yml new file mode 100644 index 0000000000..64db6a79a5 --- /dev/null +++ b/benchmark/vm_ivar_get_unintialized.yml @@ -0,0 +1,12 @@ +prelude: | + class Example + def read + @uninitialized + end + end + + obj = Example.new +benchmark: + vm_ivar_get_uninitialized: | + obj.read +loop_count: 30000000 diff --git a/benchmark/vm_ivar_lazy_set.yml b/benchmark/vm_ivar_lazy_set.yml new file mode 100644 index 0000000000..bbe42574e6 --- /dev/null +++ b/benchmark/vm_ivar_lazy_set.yml @@ -0,0 +1,12 @@ +prelude: | + class Example + def lazy_set + @uninitialized ||= 123 + end + end + + objs = 10000000.times.map { Example.new } +benchmark: + vm_ivar_lazy_set: | + objs.each(&:lazy_set) +loop_count: 1 |