Pourquoi GCC génère-t-il un code 15-20% plus rapide avec l'optimisation de taille (-Os) qu'avec l'optimisation de vitesse (-O2) ?
Bonjour à tous ! Je suis débutant en C++ et j'essaie de comprendre les flags d'optimisation de GCC. J'ai un petit programme de traitement d'images : j'applique un filtre gaussien à une matrice de pixels (taille 4096x4096). Je le compile avec différents flags et je mesure le temps d'exécution. Comme prévu, -O2 donne un gain par rapport à -O0. Mais j'ai remarqué une chose étrange : avec le flag -Os (optimisation de la taille du code), le programme est 15-20% plus rapide qu'avec -O2 (optimisation de la vitesse) ! Voici le code simplifié :
```cpp
#include
#include
#include
void gaussian_blur(const std::vector& src, std::vector& dst, int width, int height) {
const float kernel[5] = {0.0545, 0.2442, 0.4026, 0.2442, 0.0545};
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {