Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Jul 29, 2015
  1. new benchmarks for hashing dsyms and fixnums

    normal authored
    * benchmark/bm_hash_aref_dsym.rb: new benchmark
    * benchmark/bm_hash_aref_dsym_long.rb: ditto
    * benchmark/bm_hash_aref_fix.rb: ditto
    
    [ruby-core:70129] [Bug #11396] pointed out we need to consider
    more cases for hashing.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jul 2, 2015
  1. delay `exception: false' checks for minor speedup

    normal authored
    Delay hash lookups until we are about to hit an exception.  This
    gives a minor speedup ratio of 2-3% in the new bm_io_nonblock_noex
    benchmark as well as reducing code.
    
    * benchmark/bm_io_nonblock_noex.rb: new benchmark
    * ext/openssl/ossl_ssl.c (no_exception_p): new function
      (ossl_start_ssl): adjust for no_exception_p
      (ossl_ssl_connect): adjust ossl_start_ssl call
      (ossl_ssl_connect_nonblock): ditto
      (ossl_ssl_accept): ditto
      (ossl_ssl_accept_nonblock): ditto
      (ossl_ssl_read_internal): adjust for no_exception_p
      (ossl_ssl_write_internal): ditto
      (ossl_ssl_write): adjust ossl_write_internal call
      (ossl_ssl_write_nonblock): ditto
    * ext/stringio/stringio.c (strio_read_nonblock):
      delay exception check
    * io.c (no_exception_p): new function
      (io_getpartial): call no_exception_p
      (io_readpartial): adjust for io_getpartial
      (get_kwargs_exception): remove
      (io_read_nonblock): adjust for io_getpartial,
      check no_exception_p on EOF
      (io_write_nonblock): call no_exception_p
      (rb_io_write_nonblock): do not check `exception: false'
      (argf_getpartial): adjust for io_getpartial
      [ruby-core:69778] [Feature #11318]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jun 22, 2015
  1. add benchmarks for struct[:name]

    normal authored
    * benchmark/bm_vm2_struct_big_href_hi.rb: new benchmark
    * benchmark/bm_vm2_struct_big_href_lo.rb: ditto
    * benchmark/bm_vm2_struct_big_hset.rb: ditto
    * benchmark/bm_vm2_struct_small_href.rb: ditto
    * benchmark/bm_vm2_struct_small_hset.rb: ditto
      Thanks to Sokolov Yura aka funny_falcon <funny.falcon@gmail.com>
      in https://bugs.ruby-lang.org/issues/10585
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on May 30, 2015
  1. variable.c: avoid compatibility table with generic ivars

    normal authored
    This recovers and improves performance of Marshal.dump/load on
    Time objects compared to when we implemented generic ivars
    entirely using st_table.
    
    This also recovers some performance on other generic ivar objects,
    but does not bring bring Marshal.dump/load performance up to
    previous speeds.
    
    benchmark results:
    minimum results in each 10 measurements.
    Execution time (sec)
    		name    trunk   geniv   after
    marshal_dump_flo        0.343   0.334   0.335
    marshal_dump_load_geniv 0.487   0.527   0.495
    marshal_dump_load_time  1.262   1.401   1.257
    
    Speedup ratio: compare with the result of `trunk' (greater is better)
    		name    geniv   after
    marshal_dump_flo        1.026   1.023
    marshal_dump_load_geniv 0.925   0.985
    marshal_dump_load_time  0.901   1.004
    
    * include/ruby/intern.h (rb_generic_ivar_table): deprecate
    * internal.h (rb_attr_delete): declare
    * marshal.c (has_ivars): use rb_ivar_foreach
      (w_ivar): ditto
      (w_object): update for new interface
    * time.c (time_mload): use rb_attr_delete
    * variable.c (generic_ivar_delete): implement
      (rb_ivar_delete): ditto
      (rb_attr_delete): ditto
      [ruby-core:69323] [Feature #11170]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Apr 20, 2015
  1. @hsbt

    * benchmark/bm_so_meteor_contest.rb: fix a typo.

    hsbt authored
    	[fix GH-876][ci skip] Patch by @davydovanton
    * tool/bisect.sh: ditto.
    * tool/update-deps: ditto.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Mar 25, 2015
  1. @nobu

    bm_hash_aref_flo.rb: fix data

    nobu authored
    * benchmark/bm_hash_aref_flo.rb: make more realistic data.
      [ruby-core:68632] [[Bug #10999]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Mar 18, 2015
  1. @ko1

    * benchmark/bm_vm1_gc_wb_ary.rb: run GC to finish "marking" phase.

    ko1 authored
    * benchmark/bm_vm1_gc_wb_obj.rb: ditto.
    * benchmark/bm_vm1_gc_wb_ary_promoted.rb: add parameter
      full_mark: false to invoke only minor GC.
    * benchmark/bm_vm1_gc_wb_obj_promoted.rb: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Mar 17, 2015
  1. @ko1

    * benchmark/bm_vm1_gc_wb_ary(_promoted).rb: separate fastpath and

    ko1 authored
      slowpath for WB.
      Before this change bm_vm1_gc_wb_ary.rb tried to check the performance
      for WB slowpath (making a reference from oldobj to newobj). However,
      from Ruby 2.2, 3 GCs are needed to promote new objects because
      only 3 age objects are promted objects.
      To compare fastpath and slowpath, introduce new "promoted" version
      benchmark.
      bm_vm1_gc_wb_ary.rb is for fastpath and
      bm_vm1_gc_wb_ary_promoted.rb is for slowpath.
    * benchmark/bm_vm1_gc_wb_obj(_promtoed).rb: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Mar 6, 2015
  1. @nobu

    driver.rb: load-rawdata

    nobu authored
    * benchmark/driver.rb: add --load-rawdata option to load dumped
      rawdata and just output it without actual benchmark.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. @nobu

    driver.rb: rawdata format

    nobu authored
    * benchmark/driver.rb (show_results): dump the rawdata in some
      formats, yaml, json, and pretty_inspect.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Mar 5, 2015
  1. @nobu

    driver.rb: name width

    nobu authored
    * benchmark/driver.rb (BenchmarkDriver#adjusted_results):
      calculate max width of names at last.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. @nobu

    driver.rb: fix index

    nobu authored
    * benchmark/driver.rb (show_results): fix index of results.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  3. @nobu

    driver.rb: plain text table

    nobu authored
    * benchmark/driver.rb (show_results): support plain text style
      table format output.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  4. @nobu

    driver.rb: suffix

    nobu authored
    * benchmark/driver.rb: add suffix to default output file name.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  5. @nobu

    driver.rb: MarkDown table

    nobu authored
    * benchmark/driver.rb (show_results): support MarkDown style table
      format output.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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. @hsbt

    * 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. @nobu

    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. @ko1

    * 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. @ko1

    * 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. @ko1

    * 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. @mmasaki

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

    mmasaki 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. @ko1

    * 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. @ko1

    * 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. @ko1

    * 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. @ko1

    * 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. @charliesome

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