[ruby-core:94495] [Ruby master Feature#15955] UnboundMethod#apply
From:
mame@...
Date:
2019-08-23 03:28:27 UTC
List:
ruby-core #94495
Issue #15955 has been updated by mame (Yusuke Endoh).
Here is a benchmark:
```
class Foo
def foo
end
end
meth = Foo.instance_method(:foo)
obj = Foo.new
10000000.times { meth.bind(obj).call } # 1.84 sec
10000000.times { meth.apply(obj) } # 1.04 sec
```
----------------------------------------
Feature #15955: UnboundMethod#apply
https://bugs.ruby-lang.org/issues/15955#change-80930
* Author: nelhage (Nelson Elhage)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
I'd love a way to apply an UnboundMethod to a receiver and list of args without having to first `bind` it. I've ended up using `UnboundMethod`s in some hot paths in my application due to our metaprogramming idioms, and the allocation from `.bind` is comparatively expensive.
I'd love `unbound_method.apply(obj, args…)` to be equivalent to `unbound_method.bind(obj).call(args…)` but without allocating the intermediate `Method`
---Files--------------------------------
umethod_apply.patch (5.01 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>