“…Software multi-versioning was proposed to reduce the overhead of code instrumentation [4,8,10,14,16,30], for checking program correctness [14], for loop parallelization, for automatic, speculative optimizations [7,19,29], or to optimize the execution for different inputs [41,46]. The technique periodically switches between highoverhead instrumenting versions and more efficient original or optimized versions [4,8,10,16].…”