Por: Linux Adictos
A la hora de pensar en optimizar sus proyectos, los desarrolladores hacen todo lo posible por hacer el código más compacto, ordenado y eficiente que les sea posible. Sin embargo hay un detalle que influye y mucho en el rendimiento que vaya a tener una aplicación, y es el del compilador. No sólo en cuanto a los parámetros o flags que se utilizan para compilar, sino también al compilador propiamente dicho, es decir a la herramienta con la cual se realiza la tarea de transformar el código fuente en una aplicación hecha y derecha.
Pues bien, en el mundo del software libre hay un compilador por excelencia que es el de GCC, existente desde mucho antes del nacimiento de Linux ya que de hecho Linus Torvalds se basó en el paquete de herramientas de GNU (de las cuales este compilador forma parte) para dar sus primeros pasos. Pero sabido es que en esta plataforma gozamos de una importante diversidad, y por eso no es el único compilador ya que hay varios más, entre ellos uno que en los últimos tiempos ha comenzado a ganar terreno: Clang.
Algo que no es casual ni producto de ninguna moda, sino que está basado en el rendimiento impecable que ofrece, y de esto nos puede dar fe Braulio Bhavamitra, uno de los desarrolladores del lenguaje Ruby on Rails, quien asegura que las builds compiladas con Clang son un 8% más rápidas que las compiladas con GCC. Una diferencia bastante notoria, que aumenta a niveles exorbitantes del 44% si se utiliza la versión anterior de GCC, la 4.7.2, presente en Debian Wheezy.
De hecho, Google comenzó hace mucho a utilizar Clang para compilar sus builds de Chrome para OS X, y hace poco comenzaron a hacer lo propio con las builds dirigidas a Android y Linux, en este caso no tanto por un beneficio en el rendimiento (que es muy parejo en ambos casos) sino porque con el uso de Clang se logran binarios un 8% más pequeños. Desde luego, no se trata aquí de desacreditar a un veterano como GCC -sin cuya participación seguramente no estaríamos hoy hablando de la existencia de Linux- pero es interesante contar con alternativas que permitan a los desarrolladores optar por las herramientas más adecuadas o más simples para cada caso.