  Selecting the right compiler optimisations has a severe impact on programs'
performance. Still, the available optimisations keep increasing, and their
effect depends on the specific program, making the task human intractable.
Researchers proposed several techniques to search in the space of compiler
optimisations. Some approaches focus on finding better search algorithms, while
others try to speed up the search by leveraging previously collected knowledge.
The possibility to effectively reuse previous compilation results inspired us
toward the investigation of techniques derived from the Recommender Systems
field. The proposed approach exploits previously collected knowledge and
improves its characterisation over time. Differently from current
state-of-the-art solutions, our approach is not based on performance counters
but relies on Reaction Matching, an algorithm able to characterise programs
looking at how they react to different optimisation sets. The proposed approach
has been validated using two widely used benchmark suites, cBench and
PolyBench, including 54 different programs. Our solution, on average, extracted
90% of the available performance improvement 10 iterations before current
state-of-the-art solutions, which corresponds to 40% fewer compilations and
performance tests to perform.
