Writing a large Collection of integers to a file fast
Bert Freudenberg
bert at freudenbergs.de
Sat Jan 26 18:42:51 UTC 2008
On Jan 26, 2008, at 18:44 , Ramon Leon wrote:
>> If you have only small integers and free memory, the fastest
>> method (just one i/o) would be
>>
>> | memory fOut |
>> memory := Bitmap new: 6 * 1000 * 1000.
>> memory atAllPut: SmallInteger maxVal.
>> [(fOut := StandardFileStream newFileNamed: 'f.out')
>> nextPutAll: memory asByteArray]
>> ensure: [fOut close]
>>
>> You can fill the memory instance with #integerAt:put:
>>
>> /Klaus
The original post asked for printed numbers, not binary 32 bit big-
endian numbers.
> On a side note, watching this thread, I'm a bit curious why
> everyone is
> manually closing their files, why not...
>
> | memory |
> memory := Bitmap new: 6 * 1000 * 1000.
> memory atAllPut: SmallInteger maxVal.
> FileStream
> newFileNamed: 'f.out'
> do:[:f | f nextPutAll: memory asByteArray]
>
> Why is everyone ignoring that every file open method has a
> corresponding
> #do: that encapsulates the close and removes the need for a temp?
Because that's a rather new addition (since 3.9 maybe?) that won't
work in many images.
- Bert -
More information about the Squeak-dev
mailing list
|