ncellier at ifrance.com
Thu Nov 8 23:40:09 UTC 2007
To close the nextIfAtEnd: alternative see micro benchmarks (source and
results) at http://bugs.squeak.org/view.php?id=6755.
Paolo Bonzini a écrit :
>> Why would it kill performance? The block is created at the first
>> call, and thereafter a reference to it is past, no? That sounds
>> pretty fast to me.
> If you run this:
> [ self next == nil ] whileTrue: [ ... ]
> and Stream>>next is this
> ^self nextIfAtEnd: [ ^ nil ]
> every time you invoke #next, it you create a new
> BlockContext/BlockClosure, and that makes it impossible to exploit LIFO
> behavior for thisContext. It kills performance.
Yeah, implementing default next like this is definitely a no go
More information about the Squeak-dev