Skip to content
  • 卜部昌平's avatar
    02b52b27
    make opt_str_freeze leaf · 02b52b27
    卜部昌平 authored
    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
    02b52b27
    make opt_str_freeze leaf
    卜部昌平 authored
    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
Loading