Shea Martin wrote:
>
>> It makes sense once you "wrap" your head around it 
>>
>> (Also, you might want, if possible, to use yield in worker, as well.
>> It's more efficient.)
>>
>
> Yeah, it seems dead obvious *now*. That is good to know about 'yield'
> being more efficient. I always used the named Proc, as I prefer it
> syntactically (and I always mispell yeild
). I will start using yield.
>
> ~S
Just found my benchmark to back this assertion up:
$ cat yield-vs-proc.rb
require 'benchmark'
def outer11(&bl)
inner1(&bl)
end
def outer12(&bl)
inner2(&bl)
end
def outer21
inner1 {yield}
end
def outer22
inner2 {yield}
end
def inner1(&bl)
bl.call
end
def inner2
yield
end
n = 100000
Benchmark.bmbm(10) do |rpt|
rpt.report("outer11") do
n.times {outer11{}}
end
rpt.report("outer12") do
n.times {outer12{}}
end
rpt.report("outer21") do
n.times {outer21{}}
end
rpt.report("outer22") do
n.times {outer22{}}
end
end
__END__
Output:
Rehearsal ---------------------------------------------
outer11 0.890000 0.010000 0.900000 ( 0.894500)
outer12 0.370000 0.000000 0.370000 ( 0.364880)
outer21 0.770000 0.000000 0.770000 ( 0.77663

outer22 0.170000 0.000000 0.170000 ( 0.163393)
------------------------------------ total: 2.210000sec
user system total real
outer11 0.490000 0.000000 0.490000 ( 0.491969)
outer12 0.400000 0.000000 0.400000 ( 0.396264)
outer21 0.760000 0.000000 0.760000 ( 0.76450

outer22 0.160000 0.000000 0.160000 ( 0.161982)
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407