Specialising Software for Different Downstream Applications Using Genetic Improvement and Code Transplantation

Justyna Petke, Mark Harman, William B. Langdon, Westley Weimer
2018 IEEE Transactions on Software Engineering  
Genetic improvement uses automated search to find improved versions of existing software. Genetic improvement has previously been concerned with improving a system with respect to all possible usage scenarios. In this paper, we show how genetic improvement can also be used to achieve specialisation to a specific set of usage scenarios. We use genetic improvement to evolve faster versions of a C++ program, a Boolean satisfiability solver called MiniSAT, specialising it for three applications.
more » ... specialised solvers achieve between 4% and 36% execution time improvement, which is commensurate with efficiency gains achievable using human expert optimisation for the general solver. We also use genetic improvement to evolve faster versions of an image processing tool called ImageMagick, utilising code from GraphicsMagick, another image processing tool which was forked from it. We specialise the format conversion functionality to black & white images and colour images only. Our specialised versions achieve up to 3% execution time improvement.
doi:10.1109/tse.2017.2702606 fatcat:7ig35pcwdjahhn3kvs3gf44knq