Exupery is now faster than VisualWorks for the bytecode benchmark
Bryce Kampjes
bryce at kampjes.demon.co.uk
Sun Apr 10 15:30:06 UTC 2005
Exupery is finally faster than VisualWorks for the bytecode
benchmark. There is still plenty of room to tune Exupery's bytecode
performance. It's major advantage is it uses a colouring coalescing
register allocator.
For Exupery running in Squeak:
'694,237,288 bytecodes/sec; 14,295,065 sends/sec'
For the Squeak interpreter:
'204146730 bytecodes/sec; 6390893 sends/sec'
For VisualWorks:
'687,248,322 bytecodes/sec; 82,031,109 sends/sec'
And my standard benchmarks comparing the interpreter to Exupery.
Benchmark Interpreter Exupery Ratio
arithmaticLoopBenchmark 1595 compiled 132 ratio: 12.083
bytecodeBenchmark 2459 compiled 715 ratio: 3.439
sendBenchmark 1776 compiled 816 ratio: 2.176
gifConversion 2042 compiled 1565 ratio: 1.305
Cumulative Time 1942 compiled 589 ratio: 3.296
It's still a lot slower than VisualWorks for sends but it it twice
as fast as the interpreter.
The plan is to rewrite the at: and at:put: implementation next. I'm
going to use PICs to type check then compile a specialised version of
at: for each receiver. This may make at: slower in the short term, I
don't know. But it will mean that optimising at: will also optimise
sends in general. And it will provide the machinery to optimise other
critical primitives such as new:.
After that I'm planning on improving Exupery's general reliability.
The key question is what is the absolute minimum that needs to be done
to make Exupery practically useful. There are plenty of largish
projects that could make Exupery much faster, but being useful is
important too.
Bryce
More information about the Squeak-dev
mailing list
|