1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/benchmark
Jeremy Evans 11c311e36f Use realpath(3) instead of custom realpath implementation if available
This approach is simpler than the previous approach which tries to
emulate realpath(3).  It also performs much better on both Linux and
OpenBSD on the included benchmarks.

By using realpath(3), we can better integrate with system security
features such as OpenBSD's unveil(2) system call.

This does not use realpath(3) on Windows even if it exists, as the
approach for checking for absolute paths does not work for drive
letters.  This can be fixed without too much difficultly, though until
Windows defines realpath(3), there is no need to do so.

For File.realdirpath, where the last element of the path is not
required to exist, fallback to the previous approach, as realpath(3)
on most operating systems requires the whole path be valid (per POSIX),
and the operating systems where this isn't true either plan to conform
to POSIX or may change to conform to POSIX in the future.

glibc realpath(3) does not handle /path/to/file.rb/../other_file.rb
paths, returning ENOTDIR in that case.  Fallback to the previous code
if realpath(3) returns ENOTDIR.

glibc doesn't like realpath(3) usage for paths like /dev/fd/5,
returning ENOENT even though the path may appear to exist in the
filesystem.  If ENOENT is returned and the path exists, then fall
back to the default approach.
2019-07-01 11:46:30 -07:00
..
gc don't use GC::Profiler on default. 2018-09-28 05:28:12 +00:00
lib add small utility for benchmarking. 2018-09-28 03:32:49 +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/app_aobench.rb: complete commented code to write the image to a file 2019-01-21 12:31:29 +00:00
app_erb.yml benchmark/app_erb.yml: remove unused variable 2018-12-22 01:43:45 +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
cgi_escape_html.yml Optimize CGI.escapeHTML by reducing buffer extension 2019-06-05 21:07:04 +09:00
complex_float_add.yml benchmark/complex_float_*.yml: New benchmarks 2019-01-01 12:20:04 +00:00
complex_float_div.yml benchmark/complex_float_*.yml: New benchmarks 2019-01-01 12:20:04 +00:00
complex_float_mul.yml benchmark/complex_float_*.yml: New benchmarks 2019-01-01 12:20:04 +00:00
complex_float_new.yml benchmark/complex_float_*.yml: New benchmarks 2019-01-01 12:20:04 +00:00
complex_float_power.yml benchmark/complex_float_*.yml: New benchmarks 2019-01-01 12:20:04 +00:00
complex_float_sub.yml benchmark/complex_float_*.yml: New benchmarks 2019-01-01 12:20:04 +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
fiber_chain.rb Rename fiber chain benchmark. 2018-11-20 10:17:08 +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_literal_small2.rb Add benchmark for hash small literals 2018-12-06 18:20:11 +00:00
hash_literal_small4.rb Add benchmark for hash small literals 2018-12-06 18:20:11 +00:00
hash_literal_small8.rb Add benchmark for hash small literals 2018-12-06 18:20:11 +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
irb_color.yml Add a benchmark using IRB::Color 2019-06-01 20:07:50 +09:00
irb_exec.yml Make sure to suppress .irbrc on benchmark 2019-06-10 22:04:52 +09: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
match_gt4.rb Reduce ONIG_NREGION from 10 to 4: power of 2 and testing revealed most pattern matches are less than or equal to 4 results 2019-05-07 21:58:55 +09:00
match_small.rb Reduce ONIG_NREGION from 10 to 4: power of 2 and testing revealed most pattern matches are less than or equal to 4 results 2019-05-07 21:58:55 +09:00
range_last.yml benchmark/range_last.yml: remove needless prelude 2019-01-06 15:46:21 +00:00
README.md benchmark/README.md: skip showing --timeout option [ci skip] 2018-07-11 22:49:48 +00:00
realpath.yml Use realpath(3) instead of custom realpath implementation if available 2019-07-01 11:46:30 -07: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 delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +00:00
so_array.rb delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +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 delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +00:00
so_count_words.yml delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +00:00
so_exception.rb delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +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 delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +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 delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +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 delete emacs mode lines [ci skip] 2018-12-27 06:12:09 +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_capitalize.yml Improve performance of case-conversion methods 2019-05-03 23:59:18 +09:00
string_downcase.yml Improve performance of case-conversion methods 2019-05-03 23:59:18 +09: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
string_split.yml string.c: improve splitting into chars 2019-04-17 05:34:46 +00:00
string_swapcase.yml Improve performance of case-conversion methods 2019-05-03 23:59:18 +09:00
string_upcase.yml Improve performance of case-conversion methods 2019-05-03 23:59:18 +09:00
time_strptime.yml Time.strptime benchmarks 2019-01-07 02:05:21 +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_check.yml Improve benchmarks and tests for threads. 2019-06-19 20:39:10 +12: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 Improve benchmarks and tests for threads. 2019-06-19 20:39:10 +12:00
vm_thread_pass_flood.rb Improve benchmarks and tests for threads. 2019-06-19 20:39:10 +12: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 Improve benchmarks and tests for threads. 2019-06-19 20:39:10 +12: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
vm_thread_sleep.yml Improve benchmarks and tests for threads. 2019-06-19 20:39:10 +12: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"