This check is not in a loop so I don't think it is performance critical...

I don't know if this change is great.


2014-09-03 16:54 GMT+02:00 Thierry Goubier <[email protected]>:

>
>
>
> 2014-09-03 14:40 GMT+02:00 Marcus Denker <[email protected]>:
>
> with:do: on SequencableCollection checks that both collections have the
>> same size (it raises an Error if not).
>>
>> with: otherCollection do: twoArgBlock
>>     "Evaluate twoArgBlock with corresponding elements from this
>> collection and otherCollection."
>>     otherCollection size = self size ifFalse: [self error:
>> 'otherCollection must be the same size'].
>>     1 to: self size do:
>>         [:index |
>>         twoArgBlock value: (self at: index)
>>                 value: (otherCollection at: index)]
>>
>> I think we should not do that:
>>
>> 1) it is slow
>>
>
> Are you sure about that one? The check is a constant cost disregarding the
> collection length, and, anyway, self size is reused just after that.
>
>
>> 2) when the other is larger, is would work and just omit the rest
>
> 3) if it is smaller, you will get an error anyway
>>
>
> I have a feeling I'm not in Pharo anymore, but in R instead ;)
>
> Thierry
>
>
>>
>> There are just three methods doing such a size check:
>>
>> with:do:
>> with:collect:
>> reverseWith:do:
>> (the last one actually raises a         SizeMismatch exception, it is the
>> sole user of that exception)
>>
>> Is there a reason why this makes sense?
>>
>> I added an issue with a slice to clean it up:
>>
>>
>> https://pharo.fogbugz.com/f/cases/13946/speed-up-with-do-by-not-checking-size
>>
>>         Marcus
>>
>>
>>
>>
>>
>>
>

Reply via email to