Writing a large Collection of integers to a file fast

Zulq Alam me at zulq.net
Mon Jan 28 05:48:01 UTC 2008


Lukas Renggli wrote:
> 
> Or even smarter:
> 
>     aStream print: int; nextPut: Character cr
> 
> Lukas
> 

I tried this and didn't get the improvement I was expecting, < 2%. I had 
a deeper look and noticed Integer>>#printOn:base: generates an 
unnecessary string representation which it then reverses and prints to 
the stream.

I got closer to 20% with these changes to Integer as well:

printOn: aStream base: base
   self negative ifTrue: [aStream nextPut: $-].
   self abs normalize printDigitsOn: aStream base: base.

printDigitsOn: aStream base: base
   (self >= base)
     ifTrue:
       [(self // base) printDigitsOn: aStream base: base].

   aStream nextPut: (Character digitValue: self \\ base)

I'm not sure why one needs to send #normalize but it was being send 
before...?

I'll create an entry in Mantis when I get a moment to check the unit 
tests and the other printXXX methods on Integer.

Regards,
Zulq.




More information about the Squeak-dev mailing list