Investigating Microarchitectural Effects on Code Optimization for Specific Processor Models

Modern compilers provide a lot of possibilities to influence the generation of machine code. Among them are different optimization levels (-O0, -O1, -O2, -O3, -Os) and the possibility to use processor specific instruction set extensions (-march=native). The hope is to achieve an increase in performance by using these options. However, previous measurements show that this assumption is not correct at first glance:

march x264 xz
generic 15,8s 23,7s
native 16,2s 24,1s

It is assumed, that this behaviour is different on different processor architectures. In this explorative thesis, the student will research effects of the optimization flags on different code patterns and their impact on the run-time. This includes finding patterns which behave odd or unexpected, for example which run longer with higher optimization settings. With the necessary background knowledge about compilers, these effects should not only be described, but also the reason behind the behaviour explained.


  • Knowledge of the C programming language
  • Knowledge about how a compiler works, especially optimizations

Further Information