yieldRubyでは、ブロックをに変換するよりも高速であるとよく言われProcます。
例えば:
def method
yield
end
より速い
def method &block
block.call
end
ただし、ブロックを引数として数層深く渡す必要がある場合はどうなりますか?yieldいくつのレイヤーを渡しても、常に高速ですか?それはレイヤーの数に依存しますか、それとも各クロージャーの変数の数に依存しますか?
私が尋ねる理由は、yieldいくつかのレイヤーを深くするには、それをブロックに複数回ラップする必要があるのに対し、に変換すると、Proc1回だけ実行することで時間を節約できるためです。to_procまた、メソッドにパッケージ化する必要のある変数の数に依存するかどうかも知りたいです。
したがって、どちらが高速です。
ネストされた歩留まり?
def method1;method2 {yield};end
def method2;method3 {yield};end
...
def methodn;yield;end
または&block?
def method1 █method2 █end
def method2 █method3 █end
...
def methodn █block.call;end