Abstract
Performance is one of the most important qualities of software. Severaltechniques have thus been proposed to improve it, such as programtransformations, optimisation of software parameters, or compiler flags. Manyautomated software improvement approaches use similar search strategies toexplore the space of possible improvements, yet available tooling only focuseson one approach at a time. This makes comparisons and exploration ofinteractions of the various types of improvement impractical. We propose MAGPIE, a unified software improvement framework. It provides acommon edit sequence based representation that isolates the search process fromthe specific improvement technique, enabling a much simplified synergisticworkflow. We provide a case study using a basic local search to comparecompiler optimisation, algorithm configuration, and genetic improvement. Wechose running time as our efficiency measure and evaluated our approach on fourreal-world software, written in C, C++, and Java. Our results show that, used independently, all techniques find significantrunning time improvements: up to 25% for compiler optimisation, 97% foralgorithm configuration, and 61% for evolving source code using geneticimprovement. We also show that up to 10% further increase in performance can beobtained with partial combinations of the variants found by the differenttechniques. Furthermore, the common representation also enables simultaneousexploration of all techniques, providing a competitive alternative to usingeach technique individually.