[Win32] VM Update for 2.7/2.8
Raab, Andreas
Andreas.Raab at disney.com
Wed May 24 18:58:26 UTC 2000
> Time millisecondsToRun:
> [Interpreter
> translate: 'interp.c'
> doInlining: false]
>
> I get about 85 seconds for the old VM and 86 seconds for the
> new one. From the tinyBenchmarks methods, I'd have expected
> a much better performance.
The interpreter translation is almost never affected by any increase in the
tiny benchmarks. We've noticed that a long time ago.
> I spyOn-ed the code so see where most time is spend:
>
> 19.1% {19817ms} Symbol class>>intern:
> 14.7% {15252ms} StandardFileStream>>next
> 11.9% {12347ms} CrLfFileStream(StandardFileStream)>>nextPutAll:
> 7.1% {7367ms} CrLfFileStream(Object)>>retryWithGC:until:
>
> Most time is spend creating symbols. That's pure smalltalk
> stuff. Then a large amount of time is spend with file I/O.
> Why does this read files?
For getting the method source for all the methods to translate.
> I thought, it's writing C source?
It is - #nextPutAll: comes in third.
> Is it using temporary files? Whatever,
> this partly explains why faster bytecode interpretation
> doesn't have such a big impact. And it also shows that for
> the overall performance it's at least as important to have
> fast I/O.
Absolutely. We could get a big speed advantage during I/O given that we'd
use a buffering file stream (rather than the current unbuffered version).
Anyone care to do it?!
> Last but not least, I wonder about retryWithGC:until:.
> This is called either via ClassBuilder>>fixGlobalReferences
> (unlikely) or during opening, renaming or deleting files.
> That that's funny. I never thought that it would take
> more than 7 seconds to open or delete files...
Interesting. Let me have a look at this.
- Andreas
More information about the Squeak-dev
mailing list
|