From: "David A. Black" Date: 2004-12-08T22:46:32+09:00 Subject: Re: Using yield Hi -- On Wed, 8 Dec 2004, Robert Klemme wrote: > > "David A. Black" schrieb im Newsbeitrag > news:Pine.LNX.4.44.0412071110500.21344-100000@wobblini... >> Hi -- >> >> On Tue, 7 Dec 2004, Robert Klemme wrote: >> >>> 13:21:36 [robert.klemme]: ruby yield-vs-block.rb >>> user system total real >>> yield 0.250000 0.000000 0.250000 ( 0.249000) >>> block 0.125000 0.000000 0.125000 ( 0.124000) >>> 13:21:44 [robert.klemme]: cat yield-vs-block.rb >>> >>> require 'benchmark' >>> include Benchmark >>> >>> REP = 100000 >>> >>> def bl_yield(n) >>> n.times {|i| yield i} >>> end >>> >>> def bl_fwd(n,&b) >>> n.times(&b) >>> end >> >> Those aren't equivalent, though. The second one would have to be: >> >> n.times {|i| b.call(i) } >> >> to compare the two idioms directly. > > Hm, I'm not sure I agree here. My point was to compare performance of two > idioms achieving that a block handed to a method is called from another > method called within that method. You are right with respect to the > invocation chain though. I think we're talking about different sets of "two idioms", but I see what you mean about your set. As for.... >> Or am I behind the times on automatic propagation? (But even in that >> case I don't think supplying block #1 to method #2 is the same as >> yielding to block #1 during method #1.) > > What exactly do you think is the difference here? (Apart from performance > of course) ... there's something nagging in my mind that I can't quite nail down, having something to do with argument parsing, I think. It's probably illusory. If I manage to figure out what it is, I'll post it :-) David -- David A. Black dblack@wobblini.net