The rapid growth in the use of computer technology has enlarged the range of application areas and generated a demand for higher performance machines. In order to achieve high performance in modern computing environments in the context of frequent hardware upgrading and the rising human cost, software is expected to be adaptable to hardware in order to make the high performance portable. Portability should be given higher priority during software development in order to achieve high performance in an easier, long-term cost-effective manner. It would be ideal if an optimising compiler could evolve and adapt itself to environment change without sacrificing in performance.
Adaptive Optimisation Framework for Java (AOF-Java) is a source-to-source Java optimisation framework aiming to provide continuous performance improvement to Java applications via feedback-directed iterative optimisation and machine learning techniques based on Pugh's Unified Transformation Framework (UTF).
AOF-Java uses UTF to specify an optimisation space consisting of a large collection of iteration reordering transformations. This space is large, highly irregular and highly non-linear.
AOF-Java explores this space using a heuristic search algorithm. It collects all these above optimisation profiles and uses an instance-based learning approach to build up its prior knowledge of program optimisation from these attempts. The prior knowledge will later be applied to optimise new programs. Preliminary experimental results demonstrate that the prior knowledge is indeed useful for optimisation of other programs.