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 pour la taille du code), le programme est 15 à 20 % plus rapide qu'avec -O2 (optimisation pour 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) {
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
WebSocket en JavaScript : applications en temps réel de A à Z
Pourquoi la différence de dates en 1927 casse-t-elle le code ? Top des erreurs Java
Workflow Git pour développeurs Go : du chaos au code propre
Fonctions comme arguments en Rust : 3 méthodes pour passer une fonction