Hace 14 años | Por mat30 a phoronix.com
Publicado hace 14 años por mat30 a phoronix.com

Clang es un nuevo compilador, basado en LLVM, un proyecto que en los últimos días está dando mucho que hablar. Las ventajas que ofrece Clang respecto a GCC son, en teoría, un menor tiempo de compilación y unos ejecutables más optimizados. En Phoronix realizan una comparativa de rendimiento para ver cuan mejor es Clang si lo comparamos con la última versión de GCC. Breve resumen de la comparativa en español en el primer comentario.

Comentarios

m

Con la publicación reciente de GCC 4.5 y la inminente publicación de LLVM 2.7, prevista en los próximos días, en Phoronix han decidido comprobar el rendimiento de GCC en comparación con el de LLVM. Dentro de estas pruebas se incluyen los compiladores GCC, GCC con backend LLVM (El desarrollado por Apple, LLVM-GCC) y Clang, que es el compilador nativo de C/C++ para la Máquina Virtual de Bajo Nivel o LLVM.

El sistema de pruebas usado fue un portátil Lenovo ThinkPad T61 con procesador Intel Core 2 Duo T9300 "Penryn" a frecencia 2.50GHz, 4GB de memoria DDR3, un disco duro Hitachi HTS72201 SATAT de 100GB y una tarjeta gráfica NVIDIA Quadro NVS 140M. Se usaron los mismos test que en su día usaron para comprobar el rendimiento de GCC (http://is.gd/bBLIT), exceptuando algunos que fueron eliminados debido a problemas de compilación con LLVM-GCC o LLVM-Clang o, también, a que los tests no estaban escritos en C/C++. Dichas pruebas incluían la medición de los tiempos de compilación de Apache, PHP e ImageMagick. También se comprobó el rendimiento de los binarios generados usando Apache, 7-Zip, LAME, Gcrypt, C-Ray, BYTE, GraphicsMagick, Himeno, John The Ripper y HMMer. Todas las pruebas se hicieron con la suite Phoronix Test Suite.

Mientras que la compilación con LLVM es más rápida que con GCC (Excepto en el caso de ImageMagick), en la mayoría de los casos los binarios generados con GCC 4.5 tienen un mejor rendimiento que aquellos generados con LLVM-GCC o Clang. Clang tuvo un sorprendente resultado sobre GCC y LLVM-GCC con la prueba de Apapache, donde el binario generado por Clang fue capaz de manejar un 9% más de peticiones por segundo. También se percibieron mejoras significativas con LLVM-GCC y Clang con BYTE Unix ejecutando la prueba Dhrystone 2, pero en el resto de test el rendimiento fue cercano al de GCC o considerablemente inferior. En algunos casos, el rendimiento de los binarios generados por Clang fue sencillamente desastroso.

A pesar de que LLVM/Clang no son los campeones del rendimiento actualmente, ambos componentes están siendo desarrollados muy ativamente y seguramente tengamos nuevas noticias en los próximos meses. Ciertamente, el rendimiento de LLVM/Clang debe mejorar a medida que más proyectos de código abierto están ofreciendo soporte para construir dicho proyecto con Clang. LLVM tiene también otras ventajas sobre la colección de compiladores de GNU (GNU Compilers Collection o, abreviado, GCC) que no pueden ser sujetas a medición. Al mismo tiempo, GCC tiene la ventaja de soportar más arquitecturas y optimizaciones para dichas arquitecturas que las que soporta actualmente LLVM y LLVM no tiene ningún plan para crear un compilador para Java, Fortran o cualquier otro lenguaje que si está actualmente implementado dentro GCC. Por último, actualmente el soporte de C++ es mucho más completo en GCC que en LLVM/Clang.