Project

General

Profile

« Previous | Next » 

Revision 0a4129cb

Added by zzak (zzak _) over 8 years ago

  • lib/delegate.rb: Remove backtrace cleaning for delegated methods
    This patch was provided by Rafael França and greatly improves
    performance when an exception is raised. [Bug #11461]

    Before:
    Calculating -------------------------------------
    default 86.209k i/100ms
    default raising 2.209k i/100ms

           default      1.953M (±11.0%) i/s -      9.655M
    

    default raising 21.826k (±13.5%) i/s - 108.241k

    After:
    Calculating -------------------------------------
    default 72.211k i/100ms
    default raising 34.288k i/100ms

           default      2.013M (±18.7%) i/s -      9.460M
    

    default raising 623.950k (± 9.7%) i/s - 3.120M

    Benchmark:
    require 'delegate'
    require 'benchmark/ips'

    class Foo
    def name
    'foo'
    end

    def bla
      raise
    end
    

    end

    class Bar < DelegateClass(Foo)
    end

    bar = Bar.new(Foo.new)

    Benchmark.ips do |b|
    b.report('default') { bar.name }
    b.report('default raising') { bar.bla rescue nil }
    end

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e