¿Por qué PhoneGap va lento?

Después de utilizar PhoneGap en algunos proyectos, hemos visto que su principal problema es que la aplicación generada va lenta. Sin embargo, a diferencia de Titanium, PhoneGap no hace nada con el código html y js que se programa, simplemente es abre un browser embebido dentro de la aplicación y ejecuta el código tal cual. Es cierto que tiene también librerías javascript para acceder a ciertas capacidades nativas, pero incluso sin usarlas, el mismo código funciona más rápido en el browser del teléfono que en PhoneGap.

¿Cómo es esto posible? Pues esto sucede porque la WebView (el browser que se abre dentro de una aplicación nativa de Android) va siempre un paso por detrás en términos de versiones que el Chrome para móviles, y tiene además capadas ciertas opciones (ejecución de javascript, caches, etc). Haciendo la equivalencia, es como si el browser nativo fuera un Explorer 10 y la WebView un Explorer 8 con opciones capadas. Esta situación se debe, supuestamente, a razones de seguridad, pero realmente es que ni a Google ni a Apple les gusta que abras un browser dentro de la aplicación, ya que pierden el control sobre el contenido que estás cargando.

En el caso de iPhone sucede algo similar, La UIWebView es 3 veces más lenta que el MobileSafari.

Este problema de la lentitud no se nota apenas si la aplicación es simple, pero puede llegar a ser un problema en muchos casos. Lo importante a tener en cuenta es que cualquier Web no se puede incluir en phonegap tal cual, es importante seguir algunos consejos a la hora de programar para que la aplicación vaya fluida: no abusar de frameworks, usar animaciones CSS, etc. Muchos de estos consejos son puro sentido común y son aplicables para optimizar cualquier Web móvil aunque no uses PhoneGap.

Para el futuro parece que la cosa esta mejorando, en cada versión nueva de iOS la UIWebView funciona ligeramente mejor y en Android 4.4 la nueva WebView basada en chrome funciona un 300% más rápido.

Lo más curioso y preocupante del asunto es que en el momento actual, Google y Apple han penalizado el uso de los estándares Web html-css-js en sus aplicaciones, y han conseguido que muchos desarrolladores se alejen cada vez más de estas opciones para desarrollar aplicaciones en favor de desarrollos nativos.

Mi rol es diseñar proyectos de Internet y hacer que salgan bien. Es lo que me gusta hacer y a lo que me he dedicado los últimos 10 años. Siempre en busca de nuevos retos, me interesan temas tan diversos como las metodologías ágiles, las tecnologías Cloud o el diseño de producto. Para hacer buenos productos, procuro siempre crear un marco de trabajo que permita a las personas mejorar y dar su mejor versión.

Ver toda la actividad de José Ignacio Herranz Roldán

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Posts relacionados

4 comentarios

  1. David dice:

    Muy interesante. La mejora que se avecina en el rendimiento es una gran noticia para PhoneGap porque hasta la fecha sólo he tenido decepciones, y, de alguna manera se abre la puerta a que en un futuro PhoneGap sea nuevamente opción a considerar ya que ahora mismo para mí no lo es…

    De todas formas llegado ese momento haría unas pruebas de rendimiento para comprobar cuanto hay de cierto en ese 300% (suena alocadamente redondeado).

    • José Ignacio Herranz Roldán dice:

      Estoy bastante de acuerdo contigo, aunque creo que en muchas ocasiones se le echa la culpa a PhoneGap cuando realmente el problema es que no se han cumplido las recomendaciones de Adobe a la hora de programar.

      Respecto al 300%, lo he escrito yo seguramente sin el demasiado rigor, en el último link del post puedes ver el test completo con los porcentajes desglosados. En algunos puntos importantes los porcentajes son más altos, pero realmente, si haces la media de todo el incremento de rendimiento no es tan alto.

  2. Antonio Granjo dice:

    En el cercano iOS 8 WebKit tiene el mismo rendimiento que Safari. Se supone que ya podremos ver por ejemplo otros navegadores alternativos como Chrome igual de rápidos que Safari en un iPad / iPhone:

    http://9to5mac.com/2014/06/03/ios-8-webkit-changes-finally-allow-all-apps-to-have-the-same-performance-as-safari/

Escribe un comentario