Integrating HeuristicLab with Compilers and Interpreters for Non-Functional Code Optimization Daniel Dorfmeister Oliver Krauss Software Competence Center Hagenberg Johannes Kepler University Linz Hagenberg, Austria Linz, Austria
[email protected] University of Applied Sciences Upper Austria Hagenberg, Austria
[email protected] ABSTRACT 1 INTRODUCTION Modern compilers and interpreters provide code optimizations dur- Genetic Compiler Optimization Environment (GCE) [5, 6] integrates ing compile and run time, simplifying the development process for genetic improvement (GI) [9, 10] with execution environments, i.e., the developer and resulting in optimized software. These optimiza- the Truffle interpreter [23] and Graal compiler [13]. Truffle is a tions are often based on formal proof, or alternatively stochastic language prototyping and interpreter framework that interprets optimizations have recovery paths as backup. The Genetic Compiler abstract syntax trees (ASTs). Truffle already provides implementa- Optimization Environment (GCE) uses a novel approach, which tions of multiple programming languages such as Python, Ruby, utilizes genetic improvement to optimize the run-time performance JavaScript and C. Truffle languages are compiled, optimized and of code with stochastic machine learning techniques. executed via the Graal compiler directly in the JVM. Thus, GCE In this paper, we propose an architecture to integrate GCE, which provides an option to generate, modify and evaluate code directly directly integrates with low-level interpreters and compilers, with at the interpreter and compiler level and enables research in that HeuristicLab, a high-level optimization framework that features a area. wide range of heuristic and evolutionary algorithms, and a graph- HeuristicLab [20–22] is an optimization framework that provides ical user interface to control and monitor the machine learning a multitude of meta-heuristic algorithms, research problems from process.