|
Competing Technologies for Java Program Optimization
An abundance of other academic techniques for global program optimization exist, such as: abstract interpretation, partial evaluation, deforestation, generalized partial computation, mixed computation, partial deduction and symbolic composition. But none of these has the general power of supercompilation, and in fact each of these can be viewed, theoretically, as a special case of supercompilation. A completed Java supercompiler will a completed Java supercompiler will render Java versions of these other techniques unnecessary.
There are three specific projects underway elsewhere, that compete moderately directly with the efforts of SuperCompilers, LLC:
- The Compose Project, INRIA, Prance, aims at constructing a “program specializer” for Java based on partial evaluation.
- The JOVE System by Instantiations, Inc. is described by its authors as a “Super Optimizing Deployment Environment” for Java. It performs whole-program analysis and optimizes a Java program based on this information.
- The Advanced Programming Languages Group at Microsoft Research works on "static program analysis and transformation, including dataflow and type-based local and whole-program analyses... method specialization and inlining.…" Their work apparently has no immediate commercial implications, but may eventually find its way into Microsoft compilers.
Essentially, all of this work involves very specialized and narrow global program optimization techniques, lacking the general scope of supercompilation, and displaying a correspondingly lesser functionality.
There are also some projects aiming to speed up Java by means other than supercompilation, most notably:
- IBM’s “Large-Scale Java” initiative, which aims at a large number of improvements to the Java Virtual Machine (JVM)
- The DaCapo (Dynamic Cooperative Performance Optimization for Java) project, carried out by a loose team of academic computer scientists at UMass, UNM and other locations, which also aims to improve the JVM in a number of complementary ways, including the incorporation of much more intelligent memory management routines
These projects are complementary to the Java Supercompiler project. In practice, for instance, there will be some programs that need a better memory manager more than they need supercompilation, and some that are in greater need of supercompilation. Ultimately, all these approaches will be fused into a single new approach to computing. In the immediately future, however, supercompilation will exist as one member of a family of optimization techniques – and as by far the most powerful member of this family.
|
 |
|