Zoran Budimlic, Mackale Joyner, and Ken Kennedy (2006)
Improving Compilation of Java Scientific Applications
The International Journal of High Performance Computing Applications.
Java is a high productivity object-oriented programming language that is rapidly gaining popularity in high-performance application development. One major obstacle to its broad acceptance is its mediocre performance when compared to Fortan or C, especially if the developers use object-oriented features of the language extensively. Previous work in improving the performance of object-oriented, high-performance, scientific Java applications consisted of high level compiler optimization and analysis strategies, such as class specialization and object inlining. This paper extends prior work on object inlining by improving the analysis and developing new code transformation techniques to further improve the performance of high performance applications written in high-productivity, object-oriented style. Two major impediments to effective object inlining are object and array aliasing and binary method invocations. This paper implements object and array alias strategies to address the aliasing problem while utilizing an idea from Telescoping Languages to address the binary method invocation problem. Application runtime gains of up to 20\% result from employing these techniques. These improvements should further increase the scientific community's acceptance of the Java programming language in the development of high-performance, high-productivity, scientific applications.