On Monday 06 August 2007, Ronald Fischer wrote:
> def f(&b)
>   ...
>   b.call
>   ...
> end
>
> def g
>   ...
>   yield b
>   ...
> end
>
> As far I understood the documentation for call and yield, both are
> equivalent:
>
>   f { ... }
>   g { ... }
>
> Is there a principal reason when to prefer call over yield (or vice
> versa), or are these only syntactic variations of the same feature?
>
> Ronald

There is a difference in object allocation. Ruby allocates 1 object for 
each function call, one more in the case of the &b form (it has to 
allocate the Proc). 

Then, yield costs only one object while Proc#call costs two. It can make a 
difference in case of large iterations, if you're concerned (like I am) 
about the GC eating your time.

Sylvain