mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
fbf531c4a2
* vm.c (backtrace_object): remove lev and n parameter. backtrace_object always returns all of backtrace information. * vm.c (rb_backtrace_to_str_ary): fix to use backtrace_object(). This change improve performance of caller(lev, n). * benchmark/bm_vm3_backtrace.rb: added to check above improvement. FYI: measurement on my laptop, 1.9.3p229 needs 5.125 sec, and current trunk only needs 0.299sec. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
22 lines
252 B
Ruby
22 lines
252 B
Ruby
# get last backtrace
|
|
|
|
begin
|
|
caller(0, 0)
|
|
rescue ArgumentError
|
|
alias caller_orig caller
|
|
def caller lev, n
|
|
caller_orig(lev)[0..n]
|
|
end
|
|
end
|
|
|
|
def rec n
|
|
if n < 0
|
|
100_000.times{
|
|
caller(0, 1)
|
|
}
|
|
else
|
|
rec(n-1)
|
|
end
|
|
end
|
|
|
|
rec 50
|
|
|