[Newbies] Re: How to empty a collection?
Klaus D. Witzel
klaus.witzel at cobss.com
Tue Feb 19 07:32:47 UTC 2008
On Tue, 19 Feb 2008 02:35:34 +0100, Marcin Tustin wrote:
> Isn't Cedrick's aida solution going to be significantly faster?
No, solutions based on #become: are the slowest possible. The VM has to
sweep the whole memory, for all variables in the system, to find all
references during #become:, like this
| oop |
oop := self someObject.
["check+replace reference in variables of oop, then"
oop := oop nextObject.
oop = 0
] whileFalse.
Now think that you (and every other user of your software ;-) have an
.image with 2-4gigs every time you use #become: ...
If you want something faster, look at Bert's
myCollection removeAllSuchThat: [:each | true]
and try to make it faster but keep still it correct (old elements must be
nil'ed).
/Klaus
> On Feb 19, 2008 1:02 AM, Ron Teitelbaum <Ron at usmedrec.com> wrote:
>
>> Hi Sophie,
>>
>> aCollection copy do: [:anElement |
>> aCollection remove: anElement
>> ].
>>
>> Why copy? If you start removing items from the collection, increasing
>> the
>> index will cause you to skip elements.
>>
>> Ron
>>
>> > -----Original Message-----
>> > From: itsme213
>> >
>> > I want to clear its contents (size goes back to zero), and can't seem
>> to
>> > find something like #clear or #empty. Cannot use a new collection as
>> there
>> > are shared references to it.
>> >
>> > Thanks - Sophie
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
More information about the Beginners
mailing list