La importancia de una cadena de herramientas optimizada es uno de los temas más candentes en el mundo de los desarrolladores de Android. Es posible que muchos de ustedes hayan oído hablar de GCC y Linaro, que son los dos proyectos más importantes de este tipo. GCC es un jugador veterano que se lanzó inicialmente en 1987, mientras que Linaro es un jugador relativamente joven con solo cuatro años.
Primero profundicemos en la historia de estos dos proyectos. Como dije antes, la colección de compiladores GNU es antigua. A lo largo de los años, se ha utilizado para compilar varios proyectos, incluido Android. Google decidió utilizar las versiones 4.6 y 4.7 como sus cadenas de herramientas predeterminadas y me gustaría centrarme en la versión 4.7 en esta serie de pruebas.
Linaro se lanzó en 2010 y se ha optimizado para arquitecturas ARM. Y, por supuesto, ARM se utiliza en la gran mayoría de teléfonos inteligentes y tabletas con Android. Puede encontrar Linaro como una cadena de herramientas utilizada para compilar kernels o ROM completas, y muchos desarrolladores afirman que esta cadena de herramientas es más rápida y poderosa que GCC.
Inspirándome en nuestro desarrollador Admin Pulser_G2, decidí darle una oportunidad a este mito y ver si estas afirmaciones son reales. Para hacer esto, primero descargué la fuente AOSP. construí un aosp_mako-eng objetivo para mi Nexus 4 usando el conjunto predeterminado de elementos prediseñados de Google. Después hacer otapaquete, Tengo un archivo zip de 183115481 bytes listo para flashear. Después, descargué la cadena de herramientas Linaro 4.7.4 y reemplacé GCC en preconstruidos/gcc/linux-86. Realicé los cambios necesarios para establecer el nivel O3 de optimización. Como AOSP solo admite kernels prediseñados (sin modificaciones), construí un kernel por mi cuenta con Linaro y reemplacé el kernel en mako-kernel con mi propio blob.
A continuación puedes ver los dos archivos resultantes. Como puede ver, el archivo Linaro es un poco más grande, por lo que esta cadena de herramientas en realidad hace algo con las carpetas bin y xbin. El archivo del kernel en sí también es más grande.
Pero el tamaño del archivo no es lo más importante. En cambio, centrémonos en el rendimiento. Para medir esto, utilicé el punto de referencia AnTuTu. Para mayor precisión, realicé cada prueba tres veces. Como puede ver a continuación, la diferencia es bastante grande. Sin embargo, no confiaría demasiado en estas pruebas, ya que los resultados diferían en cada prueba. Dicho esto, Linaro fue unos puntos mejor que GCC, pero AnTuTu no es tan confiable como podría pensar.
CCG
linaro
Las siguientes pruebas se realizaron con 3DMark para ver si una cadena de herramientas puede afectar el rendimiento de los gráficos. La diferencia fue incluso más significativa que con Antutu. Es posible que ganes pocos FPS con GCC, pero la suavidad general es mejor con Linaro. La puntuación también es un poco más alta.
CCG
linaro
La prueba final se realizó con el juego Asphalt 8: Airborne. A continuación puedes ver dos videos del juego ejecutándose en ambas cadenas de herramientas. El primero se realizó con Linaro, mientras que el segundo con GCC. Personalmente, creo que Linaro se siente un poco más suave que GCC, pero eso puede ser simplemente el efecto placebo ya que no fue una prueba doble ciego. Ambos núcleos estaban en stock y libres de ajustes, overclocking y cualquier otro ajuste sofisticado para mejorar el rendimiento.
//www.youtube.com/embed/BZRZenaNr9A
Entonces, ¿Linaro es mejor?
Aunque al principio era escéptico, debo admitir que Linaro parece ser una mejor opción que GCC, al menos en mi configuración de hardware. El sistema operativo se sintió más receptivo y más rápido que cuando se creó con GCC. Sin embargo, GCC sigue siendo sólido como una roca, por lo que si necesita la máxima estabilidad, puede que siga siendo la mejor opción.
En los próximos episodios, intentaré comparar otras cadenas de herramientas como SaberMod y Linaro 4.8. Háganos saber acerca de sus cadenas de herramientas favoritas en los comentarios a continuación. Y si desea que probemos otras cadenas de herramientas, ¡dígalo!