2010-03-11 12 views
9

Estamos trabajando para reducir los tiempos de compilación en Windows y, por lo tanto, estamos considerando todas las opciones. Intenté buscar en Google una comparación entre el tiempo de compilación usando GCC (MinGW o Cygwin) y el compilador de MSVC (CL) sin suerte. Por supuesto, hacer una comparación no sería tan difícil, pero prefiero evitar reinventar la rueda si puedo.Comparación de tiempo de compilación entre el compilador de Windows GCC y MSVC

¿Alguien sabe de tal comparación? O tal vez alguien tiene algo de experiencia práctica?

de entrada muy apreciado :)

Respuesta

4

Comparando compilador no es trivial:

  • Puede variar de procesador a procesador. GCC puede optimizar mejor para i7 y MSVC para Core 2 Duo o viceversa. El rendimiento puede verse afectado por el caché, etc. (Desenrolle los bucles o no desenrolle los bucles, esa es la pregunta;)).
  • Depende en gran medida de cómo se escribe el código. Ciertos modismos (equivalentes entre sí) pueden ser preferidos por un compilador.
  • Depende de cómo se usa el código.
  • Depende de las banderas. Por ejemplo, se sabe que gcc -O3 a menudo produce un código más lento que -O2 o -Os.
  • Depende de qué suposición pueda hacerse sobre el código. ¿Puede permitir el aliasing estricto o no (-fno-strict-aliasing/-fstrict-aliasing en gcc). ¿Necesita IEEE completo 754 o puede doblar reglas de cálculo de puntero flotante (-ffast-math).
  • También depende de las extensiones de procesador particulares. ¿Habilita MMX/SSE o no? ¿Usas intrínsecos o no? ¿Dependes que el código es compatible con i386 o no?
  • ¿Qué versión de gcc? ¿Qué versión de msvc?
  • ¿Utiliza alguna de las extensiones gcc/msvc?
  • ¿Utiliza microbenchmarking o macrobenchmarking?

Y al final se entera de que el resultado fue inferior a error estadístico;)

Incluso si la solicitud única se utiliza el resultado puede ser concluyentes (función A un mejor desempeño en gcc pero B en msvc)

PS. Diría que cygwin será más lento ya que tiene un nivel adicional de indirección entre POSIX y WinAPI.

+0

La pregunta es acerca de los tiempos de compilación, no sobre el rendimiento del ejecutable resultante. –

+0

Casi todo lo anterior se aplica también, excepto posiblemente el último para medir la velocidad del compilador. –

+0

¿Alguna razón para votar a la baja? –

Cuestiones relacionadas