# MAGPIE: Machine Automated General Performance Improvement via Evolution of Software

arXiv: https://arxiv.org/abs/2208.02811 · HTML: https://mlsanity.com/paper/2208.02811/

## Key facts

- Cited by 1 papers in the map (data through 14 Oct 2026).
- Builds on 8 of its 71 references that are in the map.
- First posted on arXiv 4 Aug 2022.

## Builds on (most cited first, 8 of 8)

- [Automated Algorithm Selection: Survey and Perspectives](https://mlsanity.com/paper/1811.11597/) (2018)
- [ParamILS: An Automatic Algorithm Configuration Framework](https://mlsanity.com/paper/1401.3492/) (2014)
- [A Survey on Compiler Autotuning using Machine Learning](https://mlsanity.com/paper/1801.04405/) (2018)
- [Darwinian Data Structure Selection](https://mlsanity.com/paper/1706.03232/) (2017)
- [Lost in translation: Exposing hidden compiler optimization opportunities](https://mlsanity.com/paper/1903.11397/) (2019)
- [Hot-Rodding the Browser Engine: Automatic Configuration of JavaScript Compilers](https://mlsanity.com/paper/1707.04245/) (2017)
- [MLComp: A Methodology for Machine Learning-based Performance Estimation and Adaptive Selection of Pareto-Optimal Compiler Optimization Sequences](https://mlsanity.com/paper/2012.05270/) (2020)
- [Genetic Improvement in the Shackleton Framework for Optimizing LLVM Pass Sequences](https://mlsanity.com/paper/2204.13261/) (2022)

## Built on by (most cited first, 1 of 1)

- [Learning Performance-Improving Code Edits](https://mlsanity.com/paper/2302.07867/) (2023)

## Abstract (arXiv)

Performance is one of the most important qualities of software. Several techniques have thus been proposed to improve it, such as program transformations, optimisation of software parameters, or compiler flags. Many automated software improvement approaches use similar search strategies to explore the space of possible improvements, yet available tooling only focuses on one approach at a time. This makes comparisons and exploration of interactions of the various types of improvement impractical. We propose MAGPIE, a unified software improvement framework. It provides a common edit sequence based representation that isolates the search process from the specific improvement technique, enabling a much simplified synergistic workflow. We provide a case study using a basic local search to compare compiler optimisation, algorithm configuration, and genetic improvement. We chose running time as our efficiency measure and evaluated our approach on four real-world software, written in C, C++, and Java. Our results show that, used independently, all techniques find significant running time improvements: up to 25% for compiler optimisation, 97% for algorithm configuration, and 61% for evolving source code using genetic improvement. We also show that up to 10% further increase in performance can be obtained with partial combinations of the variants found by the different techniques. Furthermore, the common representation also enables simultaneous exploration of all techniques, providing a competitive alternative to using each technique individually.
