Feature #3917: [proposal] called_from() which is much faster than
caller()
http://redmine.ruby-lang.org/issues/show/3917
$B5/I<<T(B: makoto kuwata
$B%9%F!<%?%9(B: Open, $BM%@john(B: Normal
$B%+%F%4%j(B: core, Target version: 1.9.x
I propose to introduce Kernel#called_from() which is similar to caller()
but much faster than it.
Background
There are some cases to want to know from where current method is
called.
In this case, Kernel#caller() is used.
But Kernel#caller() has performance issues for these cases.
- caller() retrieves entire stack frame. It is too heavy.
- caller() returns an array of “filename:linenum in `method’” string.
User must parse it and retrieve filename and linenum by rexp.
It is also very heavy weight task.
Therefore I propose Kernel#called_from() which is very light weight
compared to caller(). A certain benchmark shows that called_from()
is more than 20 times faster tan caller().
$B8