198 votos

Clang vs GCC - lo que produce la mejor binarios?

Actualmente estoy usando GCC, pero he descubierto Clang recientemente y estoy reflexionando sobre el cambio. Hay un factor decisivo a pesar de calidad (velocidad, consumo de memoria, fiabilidad) de los binarios se produce - si gcc -O3puede producir un binario que se ejecuta el 1% más rápido o toma 1% menos de memoria, se rompe el acuerdo.

Clang cuenta con mejor compilar velocidades y menor tiempo de compilación de la memoria la huella de GCC, pero estoy realmente interesado en puntos de referencia/comparaciones de la resultante de software compilado - ¿me podrías recomendar algunos o describir sus experiencias?

44voto

Nietzche-jou Puntos 7711

Phoronix hizo algunos puntos de referencia acerca de esta, pero se trata de una instantánea de la versión de Clang/LLVM de un par de meses. Los resultados que se que las cosas eran más o menos un empuje; ni GCC ni Clang es, definitivamente, la mejor en todos los casos.

Ya tendría que utilizar la última Clang, es tal vez un poco menos relevante. A continuación, de nuevo, GCC 4.6 está programado para tener algunas de las principales optimizaciones para Core 2 y core i7, al parecer.

Me imagino que Clang la compilación más rápido de la velocidad será más agradable para los desarrolladores originales, y luego, cuando usted empuje el código en el mundo, la distro de Linux/BSD/etc. los usuarios finales podrán usar GCC para el más rápido de archivos binarios.

15voto

mcandre Puntos 6965

El hecho de que el Ruido se compila el código más rápido puede no ser tan importante como la velocidad de la binario resultante. Sin embargo, aquí hay una serie de puntos de referencia.

12voto

Atom Puntos 8739

Hay muy poca diferencia global entre GCC 4.8 y clang 3.3 en términos de velocidad de la binario resultante. En la mayoría de los casos el código generado por los compiladores de ambos se realiza de manera similar. Ninguno de estos dos compiladores domina el otro.

Puntos de referencia diciendo que existe una gran diferencia de rendimiento entre el GCC y el sonido son más que una coincidencia.

El rendimiento del programa se ve afectada por la elección del compilador. Si un desarrollador o grupo de desarrolladores es exclusivamente el uso de GCC, entonces el programa puede esperar para correr un poco más rápido con GCC que con clang, y viceversa.

Desde el punto de vista del desarrollador, existe una notable diferencia entre GCC 4.8+ y clang 3.3 es que GCC tiene la -Og opción de línea de comandos. Esta opción permite optimizaciones que no interfieran con la depuración, así, por ejemplo, siempre es posible obtener información correcta seguimientos de pila. La ausencia de esta opción en clang hace sonar más difícil de usar un compilador de optimización para algunos desarrolladores.

9voto

Paul R Puntos 104036

La única manera de determinar esto es intentarlo. FWIW he visto algunas muy buenas mejoras en el uso de Apple LLVM gcc 4.2 comparación con el ordinario de gcc 4.2 (para x86-64 código con un buen montón de SSE), pero YMMV para diferentes bases de código. Suponiendo que está trabajando con x86/x86-64 y que realmente se preocupan acerca de los últimos por ciento, entonces usted debe tratar de Intel ICC demasiado, ya que esto a menudo puede vencer gcc - usted puede obtener una evaluación de 30 días de licencia de intel.com y lo pruebe.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X