Issue #8576 has been updated by Koichi Sasada.


Actually, I tried this approach, but I couldn't find good improvement. I'll try it again.

----------------------------------------
Feature #8576: Add optimized method type for constant value methods
https://bugs.ruby-lang.org/issues/8576#change-62879

* Author: Charlie Somerville
* Status: Open
* Priority: Normal
* Assignee: Koichi Sasada
* Target version: next minor
----------------------------------------
I've written a patch adding a new method type (VM_METHOD_TYPE_CONSTVAL) for methods that only return a constant value. The patch significantly improves the performance of calls to these types of methods.

I've written a small benchmark script:

    require "benchmark"
    
    def foo
      1234
    end
    
    puts Benchmark.measure {
      1_000_000.times do
        foo; foo; foo; foo; foo
        foo; foo; foo; foo; foo
      end
    }

Before patch:

    $ ./rb x.rb
      0.620000   0.000000   0.620000 (  0.625130)

After patch:

    $ ./rb x.rb
      0.300000   0.000000   0.300000 (  0.296528)

The patch is here: https://github.com/charliesome/ruby/compare/constant-value-methods



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>