summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2020-05-28 13:37:14 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2020-06-03 16:13:47 +0900
commitd4015cfee34f236b58e20da418d7dea540bf7cc1 (patch)
treedc98a2e4bf5610beaa433e5a301629ae0d89ebb0 /benchmark
parent6302b963681e810287b63b0c29adc4718bfe9c5a (diff)
add benchmark for different block handlers
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3152
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/vm_block_handler.yml27
1 files changed, 27 insertions, 0 deletions
diff --git a/benchmark/vm_block_handler.yml b/benchmark/vm_block_handler.yml
new file mode 100644
index 0000000000..461d7953ad
--- /dev/null
+++ b/benchmark/vm_block_handler.yml
@@ -0,0 +1,27 @@
+# :FIXME: is there a way to benchmark block_handler_type_ifunc?
+
+prelude: |
+ p = proc{_1}
+ o = Object.new
+ def o.each
+ i = 0
+ while i < 3_000_000 do
+ yield i
+ i += 1
+ end
+ end
+
+benchmark:
+ - name: block_handler_type_iseq
+ script: |
+ o.each{_1}
+
+ - name: block_handler_type_symbol
+ script: |
+ o.each(&:itself)
+
+ - name: block_handler_type_proc
+ script: |
+ o.each(&p)
+
+loop_count: 1