Keynote lecture 1: optimizing the performance of scientific Java applications
Kleanthis Psarris · Annual Conference on Computers · 2010
As part of its type-safety regime, the Java semantics require precise exception at runtime when programs attempt out-of-bound array accesses. In general, this requires a dynamic bounds check each time an array element is accessed, which limits the performance of array intensive scientific applications implemented in Java. However, if it can be proven that the array index is within the bounds of the array, the check can be eliminated. We present a new algorithm based on extended Static Single Assignment (eSSA) form that builds a constraint system representing control flow qualified, linear constraints among program variables derived from program statements. Our system then derives relationships among variables, and provides a verifiable proof of its conclusions. This proof can be verified by a runtime system to minimize the analysis' performance impact. Our system simultaneously considers both control flow and data flow when analyzing the constraint system, handles general linear inequalities instead of simple difference constraints, and provides verifiable proofs for its claims. We present experimental results demonstrating that this method eliminates more bounds checks than prior approaches with minimal overhead during JIT compilation. Furthermore our algorithm increased the speed at which the Java benchmarks executed by up to 16%.