|
The Supercompilation Story
Supercompilation is a radical programming language optimization technique, invented by Russian computing pioneer and SuperCompilers, LLC cofounder Valentin Turchin. Quite simply, a supercompiler takes in a piece of source code, and outputs a new piece of source code, doing the same thing but at a significantly – sometimes tremendously – faster rate.
In the 1970’s and 80’s, Valentin Turchin, Andrei Klimov and their colleagues at the Keldysh Institute in Russia developed a supercompiler for the Russian programming language Refal. Since 1998 they and their team at SuperCompilers, LLC have been working to replicate their achievement for the more complicated but far more commercially significant language Java. It is a large project and completion is scheduled for early 2003. But even at this stage, their partially complete Java supercompiler has had some dramatic practical successes.
The current version of the Java supercompiler is not yet ready for commercial release, but in the able hands of its creators, it can be used to dramatically speed up real-world Java programs.
Particularly good candidates for supercompilation, at this early stage, are Java programs that make use of standard libraries for which source code is available. The supercompiler can automatically rewrite the standard libraries to be more efficient in the particular context of the program that’s using them, and automatically rewrite the program calling the libraries to make optimal use of these new supercompiled libraries. The speedups provided in this way can be quite remarkable.
Another context in which the supercompiler may be extremely valuable in the short term is software that significantly adapts its method of operation based on certain parameters. For instance, suppose one has a program that is written very generally, but designed to behave differently when it is hooked up to different types of databases. Once it is known, in a particular instance, what type of database the program is going to be talking to, it can be supercompiled to be maximally efficient in this particular case.
Further information on various aspects of supercompilation technology can be found on the following pages:
The more technical reader may wish to consult:
There is also some online information on the Refal programming language and supercompilation in Refal.
|
 |
|