Exupery 0.15 is released and available via pre-built images, SqueakMap,
and package universes. This release includes some significant bug
fixes and a few performance enhancements.
Instructions are here:
http://wiki.squeak.org/squeak/ExuperyThe biggest practical benefit is a major bug has been fixed which
makes running with Exupery much more reliable. Crashes are no longer
expected after about an hour or so.
The two major optimisations were adding more addressing modes and
also compiling calls to the interpreters primitives. This means
that code with many calls to primitives can benefit from Exupery's
PICs. Compiling primitives is responsible for the doLoopsBenchmark
showing a benefit again, Exupery used to perform identically to the
interpreter on a Core 2.
While Exupery can improve the macro benchmarks sometimes it will
slow code down a little as well so practical performance gains
with unrestricted compilation are still a release or two away.
Here's the current benchmarks:
arithmaticLoopBenchmark 390 compiled 80 ratio: 4.875
bytecodeBenchmark 724 compiled 250 ratio: 2.895
sendBenchmark 663 compiled 385 ratio: 1.722
doLoopsBenchmark 381 compiled 235 ratio: 1.621
pointCreation 394 compiled 389 ratio: 1.013
largeExplorers 269 compiled 210 ratio: 1.280
compilerBenchmark 273 compiled 250 ratio: 1.092
Cumulative Time 413.408 compiled 232.706 ratio 1.777
ExuperyBenchmarks>>arithmeticLoop 103ms
SmallInteger>>benchmark 341ms
InstructionStream>>interpretExtension:in:for: 6069ms
Average 597.360
Next up dynamic inlining of entire methods. Exupery already
dynamically inlines a few primitive calls.
Discussion about Exupery is here:
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/exuperyBryce
P.S. Reposting because the subject line and headers got messed
up the first time around.