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.
翻译:性能是软件最重要的品质之一。 因此,提出了多种技术来改进软件。 许多自动化软件改进方法都使用类似的搜索策略来探索可能的改进空间, 但可用的工具只以一个方法为重点。 这使得对各种改进类型的相互作用进行比较和探索不切实际。 我们提出一个统一的软件改进框架MAGPIE。 它提供了一个基于共同编辑顺序的表述, 将搜索过程与具体的改进技术分离, 促成一个大大简化的协同工作流程。 我们提供案例研究, 利用基本的本地搜索来比较编译者优化、 算法配置和基因改进。 我们选择了运行时间作为我们的提高效率尺度, 并评价了我们关于四种真实世界软件( C++ 和 Java ) 的方法。 我们的结果表明, 独立使用所有技术都发现在运行中有很大的时间改进: 编译者优化25%, 算法配置97%, 使用基因改进的演变源码61% 。 我们还表明, 还可以进一步增加10%的绩效, 与个人竞争力变异技术部分组合。