[Win32] VM Update for 2.7/2.8

Stefan Matthias Aust sma at 3plus4.de
Wed May 24 18:36:48 UTC 2000


Addendum to performance:  If I do my "usual" benchmark which is

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.  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?  I 
thought, it's writing C source?  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.  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...

bye
--
Stefan Matthias Aust  //  Bevor wir fallen, fallen wir lieber auf





More information about the Squeak-dev mailing list