In the changes I did to OrderedCollection back at ESUG (but never 
finished :/), I simply removed resetTo:, and changed the default to do 
reset to 1, for the same reasons Levente posted.

Cheers,
Henry

On 25.12.2009 22:05, Stéphane Ducasse wrote:
> ok thanks
> I see the implementation was smart.
>
> Stef
> On Dec 25, 2009, at 7:46 PM, Levente Uzonyi wrote:
>
>    
>> On Fri, 25 Dec 2009, Stéphane Ducasse wrote:
>>
>>      
>>> Hi levente
>>>
>>> Reading your changes I was wondering if resetTo: should not be moved into 
>>> OrderedCollection class>>  new:
>>> and why only have it for the default new?
>>>        
>> The patch below had the purpose to speed up #asOrderedCollection in general. 
>> But I think #resetTo: can be moved to #new: or even to #setCollection: on 
>> the instance side, since I don't see any benefit for using array size // 3 
>> for firstIndex. I guess the original idea was to leave enough space on both 
>> sides of the array, so adding to both sides has good performance, though in 
>> general this is not the case, because #makeRoomAtFirst and #makeRoomAtLast 
>> doesn't leave space on both sides.
>>
>> o := OrderedCollection new.
>> [
>>      1 to: 10000 do: [ :each |
>>              o
>>                      addFirst: each;
>>                      addFirst: each ] ] timeToRun ===>  4
>>
>> o := OrderedCollection new.
>> [
>>      1 to: 10000 do: [ :each |
>>              o
>>                      addLast: each;
>>                      addLast: each ] ] timeToRun ===>  3
>>
>> o := OrderedCollection new.
>> [
>>      1 to: 10000 do: [ :each |
>>              o
>>                      addFirst: each;
>>                      addLast: each ] ] timeToRun ===>  20067
>>
>>
>> Levente
>>
>>      
>>> OrderedCollection class>>newFrom: aCollection
>>>     "Answer an instance of me containing the same elements as aCollection."
>>>
>>> +   ^(self new: aCollection size)
>>> +           resetTo: 1;
>>> +           addAll: aCollection;
>>> +           yourself
>>> -   | newCollection |
>>> -   newCollection := self new: aCollection size.
>>> -   newCollection addAll: aCollection.
>>> -   ^newCollection
>>>
>>> I did
>>>     OrderedCollection new: 100.
>>>     and contrary to what I expected firstIndex is not 1 but 33.
>>>     Now when you add resetTo: 1     firstIndex get 1.
>>>
>>> new: anInteger
>>>     "Create a collection with enough room allocated to contain up to 
>>> anInteger elements.
>>>     The new instance will be of size 0 (allocated room is not necessarily 
>>> used)."
>>>     ^self basicNew setCollection: (Array new: anInteger)
>>>
>>> setCollection: anArray
>>>     array := anArray.
>>>     self reset
>>>
>>> reset
>>>     firstIndex := array size // 3 max: 1.
>>>     lastIndex := firstIndex - 1
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [email protected]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>        
>> _______________________________________________
>> Pharo-project mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>      
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
>    


_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to