1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/benchmark
shyouhei 02b52b2733 make opt_str_freeze leaf
Simply use DISPATCH_ORIGINAL_INSN instead of rb_funcall.  This is,
when possible, overall performant because method dispatch results are
cached inside of CALL_CACHE.  Should also be good for JIT.

----

trunk: ruby 2.6.0dev (2018-09-12 trunk 64689) [x86_64-darwin15]
ours: ruby 2.6.0dev (2018-09-12 leaf-insn 64688) [x86_64-darwin15]
last_commit=make opt_str_freeze leaf
Calculating -------------------------------------
                          trunk        ours
    vm2_freezestring     5.440M     31.411M i/s -      6.000M times in 1.102968s 0.191017s

Comparison:
                 vm2_freezestring
                ours:  31410864.5 i/s
               trunk:   5439865.4 i/s - 5.77x  slower



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-09-12 03:39:36 +00:00
..
gc revert r63899 2018-07-10 15:06:59 +00:00
lib/benchmark_driver output/driver.rb: add output plugin to reproduce 2018-07-10 15:44:45 +00:00
other-lang
app_answer.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_aobench.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_erb.yml benchmark: revise ERB benchmarks using YAML syntax 2018-07-10 15:58:52 +00:00
app_factorial.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_fib.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_lc_fizzbuzz.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_mandelbrot.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_pentomino.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_raise.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_strconcat.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_tak.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_tarai.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
app_uri.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k_10.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k_11.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k__1k.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k__6k.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k__100.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k___10k.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sample_100k___50k.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_shift.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_small_and.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_small_diff.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_small_or.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sort_block.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_sort_float.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_values_at_int.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
array_values_at_range.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
bighash.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
dir_empty_p.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
enum_lazy_grep_v_20.rb Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining 2018-08-16 00:58:21 +00:00
enum_lazy_grep_v_50.rb Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining 2018-08-16 00:58:21 +00:00
enum_lazy_grep_v_100.rb Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining 2018-08-16 00:58:21 +00:00
enum_lazy_uniq_20.rb Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining 2018-08-16 00:58:21 +00:00
enum_lazy_uniq_50.rb Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining 2018-08-16 00:58:21 +00:00
enum_lazy_uniq_100.rb Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining 2018-08-16 00:58:21 +00:00
erb_render.yml benchmark: revise ERB benchmarks using YAML syntax 2018-07-10 15:58:52 +00:00
file_chmod.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
file_rename.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_dsym.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_dsym_long.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_fix.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_flo.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_miss.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_str.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_sym.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_aref_sym_long.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_flatten.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_ident_flo.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_ident_num.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_ident_obj.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_ident_str.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_ident_sym.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_keys.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_long.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_shift.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_shift_u16.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_shift_u24.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_shift_u32.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_small2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_small4.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_small8.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_to_proc.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
hash_values.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
int_quo.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_copy_stream_write.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_copy_stream_write_socket.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_file_create.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_file_read.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_file_write.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_nonblock_noex.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_nonblock_noex2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_pipe_rw.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_select.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_select2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
io_select3.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
loop_for.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
loop_generator.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
loop_times.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
loop_whileloop.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
loop_whileloop2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
marshal_dump_flo.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
marshal_dump_load_geniv.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
marshal_dump_load_time.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
README.md benchmark/README.md: skip showing --timeout option [ci skip] 2018-07-11 22:49:48 +00:00
require.yml benchmark: introduce benchmark_driver.gem 2018-07-08 14:38:05 +00:00
require_thread.yml benchmark: introduce benchmark_driver.gem 2018-07-08 14:38:05 +00:00
securerandom.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_ackermann.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_array.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_binary_trees.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_concatenate.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_count_words.yml benchmark: introduce benchmark_driver.gem 2018-07-08 14:38:05 +00:00
so_exception.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_fannkuch.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_fasta.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_k_nucleotide.yml benchmark: introduce benchmark_driver.gem 2018-07-08 14:38:05 +00:00
so_lists.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_mandelbrot.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_matrix.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_meteor_contest.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_nbody.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_nested_loop.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_nsieve.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_nsieve_bits.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_object.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_partial_sums.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_pidigits.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_random.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_reverse_complement.yml benchmark: introduce benchmark_driver.gem 2018-07-08 14:38:05 +00:00
so_sieve.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
so_spectralnorm.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
string_index.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
string_scan_re.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
string_scan_str.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
time_subsec.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm1_attr_ivar.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_attr_ivar_set.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_block.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_blockparam.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_blockparam_call.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_blockparam_pass.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_blockparam_yield.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_const.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_ensure.yml benchmark/vm1_ensure.yml: rollback loop_count abstraction 2018-07-08 16:46:49 +00:00
vm1_float_simple.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_short_lived.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_short_with_complex_long.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_short_with_long.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_short_with_symbol.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_wb_ary.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_wb_ary_promoted.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_wb_obj.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_gc_wb_obj_promoted.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_ivar.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_ivar_set.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_length.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_lvar_init.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_lvar_set.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_neq.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_not.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_rescue.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm1_simplereturn.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_swap.yml benchmark/vm1_*.yml: manual fixes for ugly conversions 2018-07-08 16:35:44 +00:00
vm1_yield.yml benchmark/vm1_*.yml: abstract away the while loop 2018-07-08 16:28:34 +00:00
vm2_array.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_bigarray.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_bighash.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_case.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_case_lit.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_defined_method.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_dstr.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_eval.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_fiber_switch.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_freezestring.yml make opt_str_freeze leaf 2018-09-12 03:39:36 +00:00
vm2_method.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_method_missing.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_method_with_block.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_module_ann_const_set.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_module_const_set.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_mutex.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_newlambda.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_poly_method.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_poly_method_ov.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_poly_singleton.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_proc.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_raise1.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_raise2.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_regexp.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_send.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_string_literal.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_big_aref_hi.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_big_aref_lo.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_big_aset.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_big_href_hi.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_big_href_lo.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_big_hset.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_small_aref.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_small_aset.yml benchmark/vm2_struct_small_aset.yml: unwrap loop_count 2018-07-08 17:22:58 +00:00
vm2_struct_small_href.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_struct_small_hset.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_super.yml benchmark/vm2_*.yml: fix ugly conversion errors 2018-07-08 17:19:57 +00:00
vm2_unif1.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm2_zsuper.yml benchmark/vm2_*.yml: abstract away the while loop 2018-07-08 17:03:23 +00:00
vm3_backtrace.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm3_clearmethodcache.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm3_gc.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm3_gc_old_full.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm3_gc_old_immediate.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm3_gc_old_lazy.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_symbol_block_pass.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_alive_check1.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_close.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_condvar1.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_condvar2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_create_join.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_mutex1.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_mutex2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_mutex3.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_pass.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_pass_flood.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_pipe.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_queue.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_sized_queue.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_sized_queue2.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_sized_queue3.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00
vm_thread_sized_queue4.rb benchmark: drop all bm_ prefix for legacy driver.rb 2018-07-10 13:08:40 +00:00

ruby/benchmark

This directory has benchmark definitions to be run with benchmark_driver.gem.

Normal usage

Execute gem install benchmark_driver and run a command like:

# Run a benchmark script with the ruby in the $PATH
benchmark-driver benchmark/app_fib.rb

# Run benchmark scripts with multiple Ruby executables or options
benchmark-driver benchmark/*.rb -e /path/to/ruby -e '/path/to/ruby --jit'

# Or compare Ruby versions managed by rbenv
benchmark-driver benchmark/*.rb --rbenv '2.5.1;2.6.0-preview2 --jit'

# You can collect many metrics in many ways
benchmark-driver benchmark/*.rb --runner memory --output markdown

# Some are defined with YAML for complex setup or accurate measurement
benchmark-driver benchmark/*.yml

See also:

Usage: benchmark-driver [options] RUBY|YAML...
    -r, --runner TYPE                Specify runner type: ips, time, memory, once (default: ips)
    -o, --output TYPE                Specify output type: compare, simple, markdown, record (default: compare)
    -e, --executables EXECS          Ruby executables (e1::path1 arg1; e2::path2 arg2;...)
        --rbenv VERSIONS             Ruby executables in rbenv (x.x.x arg1;y.y.y arg2;...)
        --repeat-count NUM           Try benchmark NUM times and use the fastest result or the worst memory usage
        --repeat-result TYPE         Yield "best", "average" or "worst" result with --repeat-count (default: best)
        --bundler                    Install and use gems specified in Gemfile
        --filter REGEXP              Filter out benchmarks with given regexp
        --run-duration SECONDS       Warmup estimates loop_count to run for this duration (default: 3)
    -v, --verbose                    Verbose mode. Multiple -v options increase visilibity (max: 2)

make benchmark

Using make benchmark, make update-benchmark-driver automatically downloads the supported version of benchmark_driver, and it runs benchmarks with the downloaded benchmark_driver.

# Run all benchmarks with the ruby in the $PATH and the built ruby
make benchmark

# Or compare with specific ruby binary
make benchmark COMPARE_RUBY="/path/to/ruby --jit"

# Run vm1 benchmarks
make benchmark ITEM=vm1

# Run some limited benchmarks in ITEM-matched files
make benchmark ITEM=vm1 OPTS=--filter=block

# You can specify the benchmark by an exact filename instead of using the default argument:
# ARGS = $$(find $(srcdir)/benchmark -maxdepth 1 -name '*$(ITEM)*.yml' -o -name '*$(ITEM)*.rb')
make benchmark ARGS=../benchmark/erb_render.yml

# You can specify any option via $OPTS
make benchmark OPTS="--help"

# With `make benchmark`, some special runner plugins are available:
#   -r peak, -r size, -r total, -r utime, -r stime, -r cutime, -r cstime
make benchmark ITEM=vm2_bigarray OPTS="-r peak"