Long Term Goals for Exupery
Last updated at 8:53 pm UTC on 5 March 2009
Exupery is trying to combine a good quality optimiser with Self style dynamic type feedback. The compiler is written in Smalltalk. The long term goals are:
- Common sends should be free. Sends are currently twice as fast as the interpreter but VW is still 5 times faster. Full method inlining will make common (inlined) sends almost free.
- Integer and floating point performance as close to C as possible. I think that we can be as fast for a lot of methods. Integer performance should be at least 2-4 times faster than now. Exupery currently executes 800 million bytecodes/sec, VW executes 700 million bytecodes/sec, the Squeak interpreter executes 200 million bytecodes/sec.
Speeding up sends is the current major architectural project. After that it's back to bytecode performance.
Speeding up integer performance by a factor of 2-4 times should be possible by placing temporaries and arguments into registers, removing integer tagging and detagging across expressions, and moving the write barrior out of the loop. This will need some program analysis which I'll probably do with SSA which will make classical optimisations such as common expression elimination very easy to implement.
I'm planning on building the optimisation framework first just for integers then adding floats once there's a good chance that they will get a useful speed improvement.