1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Add vm_ivar get, get_unitialized, and lazy_set benchmarks

This commit is contained in:
Jemma Issroff 2022-09-14 16:48:40 -04:00 committed by Aaron Patterson
parent f98d6d3f38
commit 513a11b477
Notes: git 2022-09-15 05:51:10 +09:00
3 changed files with 61 additions and 0 deletions

37
benchmark/vm_ivar_get.yml Normal file
View file

@ -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

View file

@ -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

View file

@ -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