Issue #8576 has been updated by ko1 (Koichi Sasada).

Target version changed from current: 2.1.0 to next minor


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

Author: charliesome (Charlie Somerville)
Status: Open
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
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


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