summaryrefslogtreecommitdiff
path: root/benchmark
Commit message (Collapse)AuthorAgeFilesLines
* * benchmark/prepare_so_k_nucleotide.rb: use require_relative.ko12014-07-112-2/+2
| | | | | | | | * benchmark/prepare_so_reverse_complement.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm*: doubly-linked list from ccan to manage vm->living_threadsnormal2014-05-101-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A doubly-linked list for tracking living threads guarantees constant-time insert/delete performance with no corner cases of a hash table. I chose this ccan implementation of doubly-linked lists over the BSD sys/queue.h implementation since: 1) insertion and removal are both branchless 2) locality is improved if a struct may be a member of multiple lists (0002 patch in Feature 9632 will introduce a secondary list for waiting FDs) This also increases cache locality during iteration: improving performance in a new IO#close benchmark with many sleeping threads while still scanning the same number of threads. vm_thread_close 1.762 * vm_core.h (rb_vm_t): list_head and counter for living_threads (rb_thread_t): vmlt_node for living_threads linkage (rb_vm_living_threads_init): new function wrapper (rb_vm_living_threads_insert): ditto (rb_vm_living_threads_remove): ditto * vm.c (rb_vm_living_threads_foreach): new function wrapper * thread.c (terminate_i, thread_start_func_2, thread_create_core, thread_fd_close_i, thread_fd_close): update to use new APIs * vm.c (vm_mark_each_thread_func, rb_vm_mark, ruby_vm_destruct, vm_memsize, vm_init2, Init_VM): ditto * vm_trace.c (clear_trace_func_i, rb_clear_trace_func): ditto * benchmark/bm_vm_thread_close.rb: added to show improvement * ccan/build_assert/build_assert.h: added as a dependency of list.h * ccan/check_type/check_type.h: ditto * ccan/container_of/container_of.h: ditto * ccan/licenses/BSD-MIT: ditto * ccan/licenses/CC0: ditto * ccan/str/str.h: ditto (stripped of unused macros) * ccan/list/list.h: ditto * common.mk: add CCAN_LIST_INCLUDES [ruby-core:61871][Feature 9632 (part 1)] Apologies for the size of this commit, but I think a good doubly-linked list will be useful for future features, too. This may be used to add ordering to a container_of-based hash table to preserve compatibility if required (e.g. feature 9614). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: remove debug output and output results intoko12014-05-071-2/+1
| | | | | | | | specified file. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: add '--rawdata-output=[FILE] option to outputko12014-05-071-2/+17
| | | | | | | | raw results into FILE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: define File::NULL if not defiend and /dev/nullko12014-05-051-0/+6
| | | | | | | | is available to run benchmark driver on ruby 1.9.2. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* st.c: use power-of-two sizes to avoid slow modulo opsnormal2014-03-228-0/+37
| | | | | | | | | | | | | | | | | | * st.c (hash_pos): use bitwise AND to avoid slow modulo op (new_size): power-of-two sizes for hash_pos change (st_numhash): adjust for common keys due to lack of prime modulo [Feature #9425] * hash.c (rb_any_hash): right shift for symbols * benchmark/bm_hash_aref_miss.rb: added to show improvement * benchmark/bm_hash_aref_sym_long.rb: ditto * benchmark/bm_hash_aref_str.rb: ditto * benchmark/bm_hash_aref_sym.rb: ditto * benchmark/bm_hash_ident_num.rb: added to prevent regression * benchmark/bm_hash_ident_obj.rb: ditto * benchmark/bm_hash_ident_str.rb: ditto * benchmark/bm_hash_ident_sym.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* benchmark/driver: avoid large alloc in driver processnormal2014-01-301-1/+1
| | | | | | | * benchmark/driver: avoid large alloc in driver process [ruby-core:59869] [Bug #9430] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_so_meteor_contest.rb: [DOC] Fix a few typoscharliesome2013-12-281-5/+5
| | | | | | | | | | | | * ext/fiddle/lib/fiddle/import.rb: ditto * ext/psych/lib/psych.rb: ditto * ext/psych/lib/psych/nodes/sequence.rb: ditto * ext/tk/lib/multi-tk.rb: ditto * ext/tk/lib/tcltk.rb: ditto Closes GH-490 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_so_meteor_contest.rb: [DOC] Fix typoa_matsuda2013-12-241-1/+1
| | | | | | | s/accross/across/ [ci skip] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: check GC::OPTS availabilityko12013-12-191-1/+1
| | | | | | | | for not MRI 2.1.0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_hash_flatten.rb: added. r43896 is about 4 times fasterglass2013-11-283-0/+27
| | | | | | | | | | | | than 2.0.0p353. * benchmark/bm_hash_keys.rb: added. r43896 is about 5 times faster than 2.0.0p353. * benchmark/bm_hash_values.rb: added. r43896 is about 5 times faster than 2.0.0p353. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: output version description and GC::OPTS.ko12013-11-091-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.nobu2013-11-067-106/+106
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_vm1_gc_short_lived.rb: added.ko12013-11-067-0/+106
| | | | | | | | | | | | | | | | These GC benchmarks do not reflect practical applications. They are only for tuning. * benchmark/bm_vm1_gc_short_with_complex_long.rb: added. * benchmark/bm_vm1_gc_short_with_long.rb: added. * benchmark/bm_vm1_gc_short_with_symbol.rb: added. * benchmark/bm_vm1_gc_wb_ary.rb: added. * benchmark/bm_vm1_gc_wb_obj.rb: added. * benchmark/bm_vm_thread_queue.rb: added. Thie benchmark is added to know how fast C verion of thread.so. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: fix typo of r43543eregon2013-11-051-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: add some options to make quiet.ko12013-11-051-6/+22
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: print HWM (high water mark) if possible.ko12013-10-311-0/+7
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_app_answer.rb: revert r42990, benchmark scripts shoulderegon2013-09-221-1/+9
| | | | | | | be self-contained and avoid dependencies, especially such small one. See https://github.com/ruby/ruby/pull/393#issuecomment-24861301. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * append newline at EOF.nobu2013-09-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_app_answer.rb: removed duplicate code [Fixes GH-393]zzak2013-09-201-10/+2
| | | | | | | https://github.com/ruby/ruby/pull/393 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: fix summary of benchmark result notaton.ko12013-06-211-1/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: Do not use GC::Profiler::disable becauseko12013-06-201-3/+2
| | | | | | | | | | GC::Profiler::disable prohibit to access profiling data. It should be spec bug. Skip GC::Profiler::report if RUBY_VERSION < '2.0.0' git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: stop GC::Profiler before output results.ko12013-06-201-0/+1
| | | | | | | | Generating GC::Profiler result under profiling causes infinite loop. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/gcbench.rb: don't use __dir__ to make compatibleko12013-06-201-1/+1
| | | | | | | | with ruby 1.9.3. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_app_aobench.rb: use attr_accessor/reader instead ofko12013-06-201-20/+4
| | | | | | | | defining methods. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * remove trailing spaces.nobu2013-06-201-7/+7
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.nobu2013-06-202-309/+309
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_app_aobench.rb: added.ko12013-06-202-0/+309
| | | | | | | | * benchmark/gc/aobench.rb: added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.nobu2013-06-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_so_binary_trees.rb: disable `puts' methodko12013-06-202-2/+8
| | | | | | | | | and change iteration parameter to increase execution time. * benchmark/gc/binarytree.rb: added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.nobu2013-06-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/pentomino.rb: added.ko12013-06-201-0/+1
| | | | | | | | Simply load pentomino puzzle in the benchmark/ directory. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * remove trailing spaces.nobu2013-06-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.nobu2013-06-201-29/+29
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc/redblack.rb: import red black tree benchmark fromko12013-06-202-0/+395
| | | | | | | | | | https://github.com/jruby/rubybench/blob/master/time/bench_red_black.rb * benchmark/gc/ring.rb: add a benchmark. This benchmark create many old objects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.nobu2013-06-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/gc: create a directory to store GC related benchmark.ko12013-06-205-0/+59
| | | | | | | | | | | | * benchmark/gc/gcbench.rb: moved from tool/gcbench.rb. * benchmark/gc/hash(1|2).rb: ditto. * benchmark/gc/rdoc.rb: ditto. * benchmark/gc/null.rb: added. * common.mk: fix rule. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_hash_shift.rb: add benchmark for Hash#shiftcharliesome2013-04-251-0/+10
| | | | | | | | | | | | | | | * hash.c (rb_hash_shift): use st_shift if hash is not being iterated to delete element without iterating the whole hash. * hash.c (shift_i): remove function * include/ruby/st.h (st_shift): add st_shift function * st.c (st_shift): ditto [Bug #8312] [ruby-core:54524] Patch by funny-falcon git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * common.mk: specify label `built-ruby'.ko12012-11-261-1/+1
| | | | | | | | * benchmark/driver.rb: quote path. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: accept multiple `-e'.ko12012-11-261-10/+13
| | | | | | | | | You don't need to use `;' separation character. [ruby-core:50139] [ruby-trunk - Bug #7380] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_so_nsieve_bits.rb: add an encoding pragma.ko12012-11-211-0/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* benchmark/driver.rb: fix typos and output.eregon2012-11-171-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: add `-x' or `--exclude' optionko12012-10-241-0/+5
| | | | | | | | | | to specify exclude benchmark name pattern. You can specify "-x foo" if you want to exclude the benchmarks if the name of benchmark contains `foo'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: remove unexpected `output'.ko12012-10-191-1/+0
| | | | | | | | (commit miss) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bmx_temp.rb: removed.ko12012-10-191-5/+0
| | | | | | | | This file should not be in repository. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb: add new option `--ruby-arg [ARG]'ko12012-10-191-1/+7
| | | | | | | | | which is passed as a launch parameter for each ruby's execution. ($ ruby [ARG] [File]) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_vm2_method_missing.rb: add a benchmark to measureko12012-10-171-0/+12
| | | | | | | | performance of invoking `method_missing'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_vm2_dstr.rb: add a benchmark to measureko12012-10-161-0/+6
| | | | | | | | performance of dynamic generated string ("foo#{bar}baz"). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/bm_vm1_yield.rb: add a benchmark to measure `yield'ko12012-10-162-0/+19
| | | | | | | | | | (invoke empty block) performance. * benchmark/bm_vm2_method_with_block.rb: add a benchmark to measure method invocation with empty block. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * benchmark/driver.rb (show_results): Show speedup ratioko12012-10-161-18/+45
| | | | | | | | | with first executables score at last of results if two or more executrables are given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e