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]
default 1.953M (±11.0%) i/s - 9.655M
default raising 21.826k (±13.5%) i/s - 108.241k
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
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 raising 21.826k (±13.5%) i/s - 108.241k
After:
Calculating -------------------------------------
default 72.211k i/100ms
default raising 34.288k i/100ms
default raising 623.950k (± 9.7%) i/s - 3.120M
Benchmark:
require 'delegate'
require 'benchmark/ips'
class Foo
def name
'foo'
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