Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Jan 23, 2015
  1. benchmark/bm_marshal_dump_flo.rb: new benchmark for [Bug #10761]

    normal authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jan 22, 2015
  1. fix flonum hashing regression from r45384

    normal authored
    * st.c (st_numhash): mix float value for flonum
    * hash.c (rb_any_hash): ditto
    * benchmark/bm_hash_aref_flo.rb: new benchmark
    * benchmark/bm_hash_ident_flo.rb: ditto
      [Bug #10761]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jan 3, 2015
  1. SHIBATA Hiroshi

    * array.c: Improve performance of Array#shift. use shared instead of

    hsbt authored
      MEMMOVE if with arguments. Patch by @ksss [fix GH-537]
    * test/ruby/test_array.rb: ditto.
    * benchmark/bm_array_shift.rb: Added benchmark of GH-537 issue.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49114 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Dec 9, 2014
  1. struct: avoid all O(n) behavior on access

    normal authored
    This avoids O(n) on lookups with structs over 10 members.
    This also avoids O(n) behavior on all assignments on Struct members.
    Members 0..9 still use existing C methods to read in O(1) time
    
    Benchmark results:
    
    vm2_struct_big_aref_hi*	1.305
    vm2_struct_big_aref_lo*	1.157
    vm2_struct_big_aset*	3.306
    vm2_struct_small_aref*	1.015
    vm2_struct_small_aset*	3.273
    
    Note: I chose use loading instructions from an array instead of writing
    directly to linked-lists in compile.c for ease-of-maintainability.  We
    may move the method definitions to prelude.rb-like files in the future.
    
    I have also tested this patch with the following patch to disable
    the C ref_func methods and ensured the test suite and rubyspec works
    
    	--- a/struct.c
    	+++ b/struct.c
    	@@ -209,7 +209,7 @@ setup_struct(VALUE nstr, VALUE members)
    		ID id = SYM2ID(ptr_members[i]);
    		VALUE off = LONG2NUM(i);
    
    	-	if (i < N_REF_FUNC) {
    	+	if (0 && i < N_REF_FUNC) {
    		    rb_define_method_id(nstr, id, ref_func[i], 0);
    		}
    		else {
    
    * iseq.c (rb_method_for_self_aref, rb_method_for_self_aset):
      new methods to generate bytecode for struct.c
      [Feature #10575]
    * struct.c (rb_struct_ref, rb_struct_set): remove
      (define_aref_method, define_aset_method): new functions
      (setup_struct): use new functions
    * test/ruby/test_struct.rb: add test for struct >10 members
    * benchmark/bm_vm2_struct_big_aref_hi.rb: new benchmark
    * benchmark/bm_vm2_struct_big_aref_lo.rb: ditto
    * benchmark/bm_vm2_struct_big_aset.rb: ditto
    * benchmark/bm_vm2_struct_small_aref.rb: ditto
    * benchmark/bm_vm2_struct_small_aset.rb: ditto
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Oct 9, 2014
  1. benchmark/bm_hash_aref_sym*.rb: force static symbols

    normal authored
    Dynamic symbols hash more slowly because they need extra method
    dispatch in rb_any_hash.  I am not sure if dynamic symbols are
    a realistic use case as hash keys, so this commit only
    restores performance when comparing against versions of Ruby
    which lack dsyms.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 16, 2014
  1. Nobuyoshi Nakada

    bm_app_aobench.rb: update links [ci skip]

    nobu authored
    * benchmark/bm_app_aobench.rb: update outdated links to the
      original program.  [ruby-dev:48550] [Feature #10247]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 15, 2014
  1. benchmark/bm_app_aobench.rb: spelling fix [ci skip]

    normal authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 12, 2014
  1. proc.c (rb_proc_alloc): inline and move to vm.c

    normal authored
    * proc.c (rb_proc_alloc): inline and move to vm.c
      (rb_proc_wrap): new wrapper function used by rb_proc_alloc
      (proc_dup): simplify alloc + copy + wrap operation
      [ruby-core:64994]
    
    * vm.c (rb_proc_alloc): new inline function
      (rb_vm_make_proc): call rb_proc_alloc
    
    * vm_core.h: remove rb_proc_alloc, add rb_proc_wrap
    
    * benchmark/bm_vm2_newlambda.rb: short test to show difference
    
    First we allocate and populate an rb_proc_t struct inline to avoid
    unnecessary zeroing of the large struct.  Inlining speeds up callers as
    this takes many parameters to ensure correctness.  We then call the new
    rb_proc_wrap function to create the object.
    
    rb_proc_wrap - wraps a rb_proc_t pointer as a Ruby object, but
    we only use it inside rb_proc_alloc.  We must call this before
    the compiler may clobber VALUE parameters passed to rb_proc_alloc.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47562 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 8, 2014
  1. Koichi Sasada

    * benchmark/bm_app_lc_fizzbuzz.rb: should skip output on benchmark.

    ko1 authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. Koichi Sasada

    * benchmark/bm_app_lc_fizzbuzz.rb: `answer.to_a' does not return

    ko1 authored
      a string, but an array.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  3. Koichi Sasada

    * benchmark/bm_app_lc_fizzbuzz.rb: added.

    ko1 authored
      This program is described closely in "Understanding Computation"
      chapter 6 by Tom Stuart. <http://computationbook.com/>
      Japanese translation will be published soon.
      <http://www.oreilly.co.jp/books/9784873116976/>
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Aug 8, 2014
  1. Masaki Matsushita

    * lib/securerandom.rb: use OpenSSL::BN for performance improvement.

    Glasssaga authored
    * benchmark/bm_securerandom.rb: benchmark script.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jul 11, 2014
  1. Koichi Sasada

    * benchmark/prepare_so_k_nucleotide.rb: use require_relative.

    ko1 authored
    * benchmark/prepare_so_reverse_complement.rb: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on May 10, 2014
  1. vm*: doubly-linked list from ccan to manage vm->living_threads

    normal authored
    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
Commits on May 7, 2014
  1. Koichi Sasada

    * benchmark/driver.rb: remove debug output and output results into

    ko1 authored
      specified file.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. Koichi Sasada

    * benchmark/driver.rb: add '--rawdata-output=[FILE] option to output

    ko1 authored
      raw results into FILE.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on May 5, 2014
  1. Koichi Sasada

    * benchmark/driver.rb: define File::NULL if not defiend and /dev/null

    ko1 authored
      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
Commits on Mar 22, 2014
  1. st.c: use power-of-two sizes to avoid slow modulo ops

    normal authored
    * 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
Commits on Jan 30, 2014
  1. benchmark/driver: avoid large alloc in driver process

    normal authored
    * 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
Commits on Dec 28, 2013
  1. Charlie Somerville

    * benchmark/bm_so_meteor_contest.rb: [DOC] Fix a few typos

    charliesome authored
    * 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
Commits on Dec 24, 2013
  1. Akira Matsuda

    * benchmark/bm_so_meteor_contest.rb: [DOC] Fix typo

    amatsuda authored
    s/accross/across/
    [ci skip]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Dec 19, 2013
  1. Koichi Sasada

    * benchmark/gc/gcbench.rb: check GC::OPTS availability

    ko1 authored
      for not MRI 2.1.0.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Nov 28, 2013
  1. Masaki Matsushita

    * benchmark/bm_hash_flatten.rb: added. r43896 is about 4 times faster

    Glasssaga authored
      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
Commits on Nov 9, 2013
  1. Koichi Sasada

    * benchmark/gc/gcbench.rb: output version description and GC::OPTS.

    ko1 authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Nov 6, 2013
  1. Nobuyoshi Nakada

    * properties.

    nobu authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. Koichi Sasada

    * benchmark/bm_vm1_gc_short_lived.rb: added.

    ko1 authored
      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
Commits on Nov 5, 2013
  1. Benoit Daloze

    * benchmark/gc/gcbench.rb: fix typo of r43543

    eregon authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. Koichi Sasada

    * benchmark/gc/gcbench.rb: add some options to make quiet.

    ko1 authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Oct 31, 2013
  1. Koichi Sasada

    * benchmark/gc/gcbench.rb: print HWM (high water mark) if possible.

    ko1 authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 22, 2013
  1. Benoit Daloze

    * benchmark/bm_app_answer.rb: revert r42990, benchmark scripts should

    eregon authored
      be self-contained and avoid dependencies, especially such small one.
      See #393 (comment).
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 20, 2013
  1. Nobuyoshi Nakada

    * append newline at EOF.

    nobu authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. Zachary Scott

    * benchmark/bm_app_answer.rb: removed duplicate code [Fixes GH-393]

    zzak authored
      #393
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jun 21, 2013
  1. Koichi Sasada

    * benchmark/gc/gcbench.rb: fix summary of benchmark result notaton.

    ko1 authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jun 20, 2013
  1. Koichi Sasada

    * benchmark/gc/gcbench.rb: Do not use GC::Profiler::disable because

    ko1 authored
      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
  2. Koichi Sasada

    * benchmark/gc/gcbench.rb: stop GC::Profiler before output results.

    ko1 authored
      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
Something went wrong with that request. Please try again.