¿Por qué GCC genera código un 15-20% más rápido al optimizar por tamaño (-Os) en lugar de por velocidad (-O2)?
¡Hola a todos! Soy nuevo en C++ y estoy tratando de entender las flags de optimización de GCC. Tengo un pequeño programa de procesamiento de imágenes: aplico un filtro Gaussiano a una matriz de píxeles (tamaño 4096x4096). Lo compilo con diferentes flags y mido el tiempo de ejecución. Como era de esperar, -O2 da una mejora en comparación con -O0. Pero noté algo extraño: con la flag -Os (optimización por tamaño de código) el programa funciona un 15-20% más rápido que con -O2 (optimización por velocidad). Aquí está el código simplificado:
```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) {
float sum = 0.0f;
for (int ky = -2; ky <= 2; ++ky) {
for (int kx = -2; kx <= 2; ++kx) {
int ix = std::clamp(x + kx, 0, width - 1);
```
No answers yet.
Inicia sesión para dejar una respuesta