[squeak-dev] Re: squeak XTream

Levente Uzonyi leves at elte.hu
Thu Dec 3 06:13:27 UTC 2009


On Tue, 1 Dec 2009, Andreas Raab wrote:

> Well, I'm still in the business of shopping for a faster version of 
> FileStream ;-)
>

I uploaded two packages to the inbox (Files-ul.37 and Multilingual-ul.68) 
which aim to speed up the read performance of FileStreams. Files-ul.37 
adds read buffering to StandardFileStream and subclasses, while 
Multilingual-ul.68 inlines a few methods. With these changes I measured 
~13.5x speedup for:

Smalltalk garbageCollect.
[ FileStream readOnlyFileNamed: 'yourlargefile.txt' do: [ :file |
 	[ file next == nil ] whileFalse ] ] timeToRun

and ~39.5x speedup for:

Smalltalk garbageCollect.
[ StandardFileStream readOnlyFileNamed: 'yourlargefile.txt' do: [ :file |
 	[ file next == nil ] whileFalse ] ] timeToRun

(where yourlargefile.txt is an 1MB sized file with random data)

The code is far from clean, some tests fail (15 of 37 BitmapStreamTests), 
but it seems to be working (though I'm sure there are a few bugs). I would 
be happy if someone could find out why the tests fail. Also a better 
test suite would be helpful.

Note that as soon as a write is performed the read buffer is killed, so 
mixed read/write behavior is probably slower than before. Also note that 
loading the changes may harm your image/changes file.


Levente



More information about the Squeak-dev mailing list