Ver la versión completa : ¿Flag -g de GCC reduce velocidad?
Puck2099
11/11/2007, 15:07
Hola,
Siempre que he usado el flag -g para depurar código me ha resultado un código mucho más lento, pero también es cierto que en ese caso también le quito todos los flags tipo -Ox para optimizarlo, así que ahora tengo la duda de si realmente empeora la velocidad por meterle la información de depuración al ejecutable o no.
¿Alguien lo sabe a ciencia cierta?
Por otro lado, ¿un código compilado con -g y luego "stripeado" para quitarle la información es igual que el mismo código compilado sin el -g?
Gracias
He hecho la prueba con gcc y los resultados son los siguientes:
(Ejemplo con el programa hola mundo)
#include <stdio.h>
int main()
{
printf ("Hola mundo");
return(0);
}
gcc -o main main.c -> 5kb
strip main -> 3kb (aun sin -g se añade codigo)
gcc -g -o maing main.c ->6kb
strip maing -> 3kb (he comprobado el código hexadecimal y es idéntico al de main después del strip)
DarkDijkstra
11/11/2007, 15:26
Hmmm, pues según lo que dice el "man", "-g" habilita el uso de información extra para depuración y bla bla... pero luego cuenta que es posible usar -g con -O, sólo que a la hora de depurar pueden pasar cosas "extrañas".
Asi pues, apostaría a que emplear -g no afecta al rendimiento (obviamente si afectará al tamaño del ejecutable), salvo que te pongas en casos increiblemente extremos en los que dicho tamaño implique paginar más memoria o cosas asi, pero creo que sería un poco enfermizo entrar en ese nivel de detalle... ; )
Se supone que las optimizaciones no se ponen hasta que el código funciona perfectamente, lo cual elimina la necesidad de activar -g para depurar. Otra cosa es que si se activa las optimizaciones la aplicación se vuelva inestable (por ejemplo al escribir algo en ensamblador,si no se define bien la optimización puede borrarlo si no me equivoco)
animanegra
11/11/2007, 17:23
La informacion de depurado que tiene que mostrar en caso de core es bastante mayor y tiene que llevar cuenta de cada linea. Y dicha informacion debe estar actualizandose a cada paso.Asi que el programa compilado sin la opcion -g tendra que ir mas ligero que otro que este compilado con dicha opcion.
Solo hay que ver la diferencia de tiempo que le cuesta hacer tan solo el volcado del core al programa si tiene info de depi¡uracion o si no la tiene.
Puedes probar a compilar sin información de debug ni optimizaciones, y comparar ;)
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.