[ruby-cvs:70302] k0kubun:r63212 (trunk): _mjit_compile_send.erb: inline attr_reader call

k0kubun at ruby-lang.org k0kubun at ruby-lang.org
Fri Apr 20 22:42:08 JST 2018


k0kubun	2018-04-20 22:42:08 +0900 (Fri, 20 Apr 2018)

  New Revision: 63212

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=63212

  Log:
    _mjit_compile_send.erb: inline attr_reader call
    
    _mjit_compile_send_guard.erb: carve out the shared logic to invalidate
    inlined method call
    
    common.mk: update dependency for this change
    
    test_jit.rb: add test for attr_reader optimization
    
    * Benchmark
    
    ```
    require 'benchmark_driver'
    
    Benchmark.driver do |x|
      x.prelude %{
        class C
          attr_reader :a
          def initialize
            @a = 1
          end
        end
    
        o = C.new
    
        def l o
          i = 0
          while i < 1000000
            o.a
            i += 1
          end
        end
      }
      x.report 'aread', %{ l o }
      x.loop_count 1000
    
      x.rbenv 'before', 'before,--jit', 'after,--jit'
      x.verbose
    end
    ```
    
    ```
    before: ruby 2.6.0dev (2018-04-20 trunk 63211) [x86_64-linux]
    before,--jit: ruby 2.6.0dev (2018-04-20 trunk 63211) +JIT [x86_64-linux]
    after,--jit: ruby 2.6.0dev (2018-04-20 trunk 63211) +JIT [x86_64-linux]
    last_commit=_mjit_compile_send.erb: inline attr_reader call
    Calculating -------------------------------------
                             before  before,--jit  after,--jit
                   aread     54.597       122.894      218.574 i/s -      1.000k times in 18.316102s 8.137089s 4.575106s
    
    Comparison:
                                aread
             after,--jit:       218.6 i/s
            before,--jit:       122.9 i/s - 1.78x  slower
                  before:        54.6 i/s - 4.00x  slower
    
    ```
    
    * Optcarrot
    
    A little made faster?
    
    fps: 71.35 -> 72.11

  Added files:
    trunk/tool/ruby_vm/views/_mjit_compile_send_guard.erb
  Modified files:
    trunk/common.mk
    trunk/test/ruby/test_jit.rb
    trunk/tool/ruby_vm/views/_mjit_compile_send.erb


More information about the ruby-cvs mailing list