[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
|