Bulldog: a compiler for VLSI architectures
Bulldog: a compiler for VLSI architectures
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Advanced compiler design and implementation
Advanced compiler design and implementation
Benchmarking Java against C and Fortran for scientific applications
Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande
Modern Compiler Design
Modern Compiler Implementation in Java
Modern Compiler Implementation in Java
Optimizing Java Bytecode Using the Soot Framework: Is It Feasible?
CC '00 Proceedings of the 9th International Conference on Compiler Construction
An Aggressive Approach to Loop Unrolling
An Aggressive Approach to Loop Unrolling
What can we gain by unfolding loops?
ACM SIGPLAN Notices
BIT: a tool for instrumenting java bytecodes
USITS'97 Proceedings of the USENIX Symposium on Internet Technologies and Systems on USENIX Symposium on Internet Technologies and Systems
Automatic program transformation with JOIE
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Using inter-procedural side-effect information in JIT optimizations
CC'05 Proceedings of the 14th international conference on Compiler Construction
Hi-index | 0.00 |
Loop optimizations such as loop unrolling, unfolding and invariant code motion have long been used in a wide variety of compilers to improve the running time of applications. In this paper we present a series of experimental results detailing the effect these techniques have on the running time of Java applications following ahead of time optimization. We also detail the optimization tools and transformations developed for this paper which extend the SOOT framework discussed in a number of previous papers on the subject. Our experimentation, conducted on the SciMark 2.0 benchmarking suite, demonstrates that when optimized using the techniques mentioned, Java applications can benefit from performance improvements of up to 20%. We finish with a discussion of the results obtained, including results on how the optimizations affect JIT compilation and class size and proceed to argue that ahead-of-time loop unrolling and unfolding optimization may have a role to play in improving the performance of Java applications, particularly in scientific applications.