Si hace unos años los sistemas operativos móviles luchaban por ofrecer el mayor número de funcionalidades posibles, hoy la guerra se libra en el terreno de la optimización y la experiencia de usuario. En este caso, iOS siempre se ha declarado el claro vencedor respecto a otros rivales como Android, Windows Phone o BlackBerry OS. No en vano, hoy vamos a comparar los dos sistemas más importantes en el mundo de la telefonía – Android y iOS – explicando las razones por las que el sistema de la manzana funciona de forma mucho más fluida en un hardware con menor potencia.

Y es que si intentamos explicar la optimización en los equipos de iOS, es casi inevitable no mencionar que la empresa californiana fabrica el hardware y desarrolla el software de forma conjunta, por lo que a la hora de optimizar el código, sólo tendrán que hacerlo para unos cuantos dispositivos, a diferencia de Android. Partiendo de esta premisa, pasemos a explicar de forma mucho más técnica las razones por las que iOS funciona mucho mejor que Android (aunque a día de hoy esta afirmación es un tanto atrevida).

En primer lugar, el código de desarrollo

La principal razón por la que Android funciona de forma menos ágil que iOS reside en la base del sistema: Java es el código en el que sus aplicaciones están escritas. A simple vista puede parecer que carece de importancia, pero los que desarrollamos en este lenguaje conocemos las limitaciones del mismo al ejecutarse bajo una máquina virtual. Esto, como todos los lenguajes, conlleva una serie de ventajas y desventajas, entre las que se incluye la correspondiente pérdida de rendimiento. Sin embargo, la principal ventaja de este es su compatibilidad con cualquier tipo de hardware; además, la máquina virtual en la que Java se ejecuta es una de las que mayor rendimiento posee en el mundo. También cabe recalcar que Android en su versión 5.0 hizo un cambio de máquina de ejecución de Dalvik a ART, por lo que esta pérdida de rendimiento se ve solventada, o al menos en parte.

Por el contrario, el lenguaje en el que las aplicaciones de iOS se desarrolla es Objective-C, el cual ha sido sustituido recientemente por el lenguaje propietario de Apple: Swift. A diferencia de Java, éste no se ejecuta en una máquina virtual, sino que lo hace directamente en el sistema a bajo nivel, por lo que el rendimiento es mucho mayor que el de Java. Además, desde que Apple lanzó Swift, el rendimiento de sus aplicaciones se ve incrementado respecto a Objective-C, al menos teóricamente.

El uso de dos lenguajes completamente distintos en cada plataforma no convierte a una mucho mejor que la otra, simplemente cada uno se ajusta a las características de cada sistema. Desarrollar en otro lenguaje para Android que no tuviese la versatilidad de Java imposibilitaría la compatibilidad con la mayoría de los dispositivos. Hacerlo para iOS provocaría una pérdida de rendimiento evidente.

En segundo lugar, el sistema de gestión de procesos en memoria

ram

Otra de las razones por las que Android no funciona tan fluido como iOS se halla en la administración de los procesos de ejecución en el sistema. Esto va intrínsicamente relacionado con el concepto de multitarea o multiprocesos: mientras que Android mantiene una serie de procesos que considera de prioridad, iOS mata estos mismos procesos cuando salimos de alguna aplicación. De forma aplicable a la navegación en el sistema, podríamos decir que mientras Android mantiene en memoria las aplicaciones que el usuario ha abierto, iOS cierra estos procesos dependiendo de la memoria RAM que ocupen, dejando el sistema mucho menos sobrecargado.

Como ya hemos dicho antes, esto contiene una serie de ventajas y desventajas. En Android podemos disfrutar de una multitarea mucho más efectiva, pero la navegación en el sistema se verá afectada debido a la acumulación de procesos. Por el contrario, en iOS no disfrutamos de una multitarea real (a excepción de aplicaciones del sistema o aplicaciones que ocupen poca memoria RAM), pero la navegación en el sistema se realiza de forma mucho más fluida que en el sistema del androide verde.

Esto explica en gran medida y de forma mucho más inmediata la pérdida de rendimiento de los equipos con Android. Es por ello que los dispositivos cada vez son lanzados con más memoria RAM y núcleos de procesador, aunque Google intentó solventar este problema en Android 4.4, permitiendo su instalación en equipos con memoria RAM inferior a 512 Mb. Esto también explica por qué los dispositivos de Apple no poseen una gran cantidad de memoria RAM. Personalmente prefiero la administración que realiza Android sobre los procesos adyacentes en el sistema.

En tercer lugar, la administración de la memoria ROM

Si en los ordenadores el componente que más influye en la velocidad del sistema es el disco duro (además del procesador), en los móviles es la memoria flash, conocida también como memoria ROM. En este aspecto no influye tanto la velocidad de escritura y lectura de las memorias – debido a que casi todas poseen similares velocidades – sino a la gestión de la misma, de igual forma que con la memoria RAM.

De sobra es conocido que en el sistema del androide verde se generan muchos más archivos por aplicación que en iOS (archivos de registro, caché, previsualización de imágenes etc), archivos que en general ralentizan el funcionamiento del terminal. Basta con hacer una búsqueda en la tienda de Google y encontrar una infinidad de aplicaciones que prometen limpiar los archivos basura que genera el sistema, si bien es cierto que esto tiene que ver más con las políticas de cada empresa en lo referente a la instalación de aplicaciones. A consecuencia de ello, en terminales con poca capacidad de memoria, el sistema pierde rendimiento bruto en la navegación general. Además, Android permite la expansión de memoria a través de tarjetas de memoria cuyas velocidades de escritura y lectura no se acercan a las de las memorias flash eMMC incluidas en los actuales smartphones, por lo que si a la pérdida de rendimiento ocasionada por la falta de memoria le sumamos la poca eficiencia de las tarjetas de expansión, la experiencia de usuario puede llegar a ser tediosa.

Sin embargo, Apple sigue lanzando terminales al mercado con unos escasos 8 Gb de memoria y es que, a pesar de resultar insuficientes, la gestión de memoria en cuanto a aplicaciones alojadas en la memoria ROM que realiza iOS no afecta al rendimiento del dispositivo como sí lo hace Android.

No obstante…

La mayoría de los dispositivos Android lanzados al mercado vienen con una capa de personalización que en lugar de aportar un valor añadido a la experiencia de usuario la empañan sobremanera. Es por ello que los terminales más punteros del mercado no obtienen el rendimiento esperado, aunque parece que algunos fabricantes como Sony están trabajando para hacer más liviana su capa de personalización.

En definitiva y a modo de reflexión, ningún sistema es mejor o peor que otro, sino que cada uno se adapta a distintas necesidades. Bajo criterio propio queda la elección del mismo. Y tú, ¿con cuál te quedas?

Artículos relacionados

Comentarios

  • Wade Wiggin

    Muy interesante.

  • “….hoy la guerra se libra en el terreno de la optimización y la experiencia de usuario. En este caso, iOS siempre se ha declarado el claro vencedor respecto a otros rivales como Android, Windows Phone o BlackBerry OS..”

    Ya con eso perdió credibilidad el artículo para mi…. Además del entusiasmo por seguir leyéndolo.

    Lógicamente, iOS supera en optimización a Android y no lo se de blackberry, amo mi Nexus 5 es fluido sin lags pero mi s3 un desastre. En fin decir que iOS esta mejor optimizado que Windows phone es un despropósito, se ve que no han usado un Lumia 520 con 512 mb de RAM y procesador dualcore y ver la fluidez con la que va…. No se…

    Lo digo por que poseo además un lumia 520 y un lumia 920, ambos en fluidez van a la par…. Una cosa es una cosa y otra cosa es otra cosa.

    • Juan Carlos Broncano

      Buenos días, Kriss. En primer lugar, gracias por comentar y leer el articulo, en segundo lugar, déjame explicarme. No he probado un Lumia 520, pero si he podido probar un Nokia Lumia 1020. A pesar de que me dejó muy buenas impresiones, noté cierto retraso en la navegación en general, sobretodo cuando entraba a la galería. Si es cierto que lo probé a escasos días de su salida, pero lo que noté fue un sistema que cojeaba en ese sentido respecto a otros. Sé que a día de hoy funciona de forma exquisita en un hardware modesto, pero me remito a modelos de Apple como el iPhone 4 o el iPad 2 para exponerte ejemplos de optimización. Además, la supuesta optimización de Windows Phone se debe más a la simplicidad de su interfaz que a una optimización del código como tal, que por supuesto no lo niego, pero no considero un despropósito decir que iOS está mejor optimizado que Windows Phone.
      Saludos.

      • Saludos, no es por alargar el tema, pero he visto iphone 4 de amigos que lagean con su ios7 u 8 creo, por esa misma razón y al comparar el hardware y software con el lumia 520 es que digo mi opinión. Pero entiendo que hayas tenido esa experiencia con el 1020.

        • Juan Carlos Broncano

          Curiosamente el de un muy buen amigo mío va bastante fino para los años que tiene. También has de tener en cuenta que estamos comparando un hardware de hace 5 años con uno de hace apenas 2. En cuanto a lo del Lumia 1020, solo noté esas ralentizaciones en lo referentes a aplicaciones con tratamiento de imágenes, como la cámara, la galería y unas cuantas de Nokia, lo cual es entendible, aunque fueron esas las sensaciones que me dio el sistema en general.
          Saludos

  • Mike

    Discrepo en varios puntos en los que opino se han contado verdades a medias o no se han explicado bien los puntos.

    El primero, indudablemente el paso intermedio de ejecutar mediante maquina virtual una aplicación en Java resta rendimiento. Java no se utiliza en iOS, PERO, Android permite la ejecución nativa de código C. Es decir, que para comparar este punto tendríamos que comprar una aplicación en C que no dependiese de la virtualización de Java, por mucho ART que Lollipop tenga.

    Lo segundo, Android, fork del núcleo Linux, sigue la misma filosofía que este ultimo: Memoria RAM libre, memoria RAM desaprovechada. Eso no significa que el sistema vaya a petar la memoria RAM, no, la gestión de procesos hace que cuando se necesite mas memoria RAM, se establezca una prioridad fijada por una serie de parámetros, como puede ser el momento en el que esa APP se abrió y desde cuanto hace que no se usa, por ejemplo. Además de eso, no se espera a quedarse a cero, tiene un limite, de forma predeterminada, suficiente para funcionar de forma correcta, luego ya en ROMs modificadas o mediante Root, al menos antes podía cambiarse ese parámetro. Además esto es así también por lo comentado en el punto uno, es preferible mantener todo el tiempo que se pueda la aplicación cargada en memoria que no tener que realizar el proceso de virtualización de nuevo. Con ART si que es cierto que busca minimizarse este proceso en concreto, por lo que he leído, haciendo una pre compilación al instalar una aplicación o arrancarla por primera vez.

    En lo referente a las velocidades de la memoria, no hay mucho que decir, simplemente que como todo, depende de que tarjeta uses… Si utilizas en un Samsung la que te viene por defecto pues es una bazofia, y te va a ir mal fijo. Ahora, cómprate (y por no mucho dinero, 13 euros en APP informática) una Samsung EVO 32Gb Clase 10… Desde luego va a seguir lejos en términos de velocidad comparada con la memoria interna, pero ralentizaciones… Yo al menos ninguna, para música, películas, incluso datos de aplicaciones, en concreto de juegos, la carpeta OBB, que aloja los datos principales de los grandes juegos.

    Luego, quizás para encontrar una causa de mayor peso, salvo la primera citada, tendríamos que indagar mas aun en ambos sistemas operativos, que parten de filosofías un poco diferentes.

    • Juan Carlos Broncano

      ¡Hola Mike! Estoy de acuerdo contigo prácticamente en todos los puntos.
      Como bien dices, Android parte de un núcleo Linux cuya gestión de memoria RAM ya sabemos como funciona, por ello considero una auténtica chorrada las aplicaciones que prometen liberar la memoria RAM del sistema (artículo sobre lo cual tenemos pensado publicar). Además, al tener que reiniciar el proceso de virtualización en el propio procesador hace que éste aumente el consumo de batería. Si es cierto que he tenido que aclarar esos puntos en el artículo, pero como ya digo, la sobreacumulación de procesos puede causar ralentizaciones en el sistema. En cuanto a lo que mencionas de las tarjetas de memoria, estoy de acuerdo en parte. En cuestión de reproducción de contenido, éstas cumplen su función de forma óptima, a lo que me refiero aquí es a la instalación de aplicaciones en la propia tarjeta. He sufrido durante años esto -a pesar de tener una tarjeta de clase 10 instalada- y ni por asomo obtiene el mismo rendimiento. Quizá en velocidades teóricas sean muy semejas, pero no es comparable el rendimiento obtenido. Hablo por supuesto desde mi propia experiencia.
      Saludos, y muchas gracias por dejar tu comentario Mike.