On 30 May 2016, at 19:03, Henrik Johansen <henrik.s.johansen@veloxit.no> wrote:
Hi!
It's starting to come back to me; IIRC, + will normalize results to SmallIntegers, digitAdd: will not.
not with Pharo5: ((LargePositiveInteger new: 3) digitAdd: SmallInteger maxVal - 10) class => SmallInteger
I thought it would be nice to use a single replaceFrom:to:with:startingAt: call to insert the entire counter; however, I didn't bench that particular part.
yes, it is nice
So while the rewrite overall gained a small amount of speed, it turns out digitAdd: is quite slow (even though it's a primitive), so reverting to using Smallinteger arithmetic for the counter, and inserting the counter a digit at a time is most likely worth it:
"Pharo4, LargeInteger counter" [OID new] bench '1,194,004 per second'
"Pharo4, reverted to SmallInteger counter" [OID new] bench '1,681,203 per second'
cool! Change looks good but please remove the obsolete >>#digitAdd: comment. thanks a lot!! holger