sábado, 10 de diciembre de 2011

Android vs IOS ¿Cuestión de fluidez?

Todos los que han utilizado Android, y lo han usado durante un tiempo, han quedado prendados de este sistema por la infinidad de posibilidades que ofrece y el nivel de personalización al que puede llegar.

Sin tener nada con que compararlo, Android es genial, ¿pero que ocurre cuando pruebas un iPhone con IOS?

Te das cuenta de algo, y es que aunque IOS no ofrece todas las posibilidades de Android, tiene una inherente ventaja, su fluidez.

Entonces la gran pregunta es, ¿Porque Android no es tan fluido como IOS? ¿Lo sera alguna vez?

Dadle a seguir leyendo para leer el articulo completo.
Fdo: eded333

Según el ingeniero de Google Andew Munn:

"No son por pausas GC. Tampoco es porque Android ejecute bytecode y porque iOS en cambio haga lo propio código nativo. La causa es que en iOS toda interfaz se procesa en unos procesos dedicados las interfaces con una alta prioridad a tiempo real que ocurre cuando se paran algunas acciones. Sin embargo Android ejecuta al estilo de un ordenador tradicional, donde el modelo de renderización ocurre en el proceso principal con una prioridad normal, causando que todo parezca menos fluido"

Un ejemplo de esto seria, al al navegar por internet, Android carga la página según navegas y según interactuas con el movil.
IOS en el momento en el que interactuas con el movil deja de cargar la pagina y vuelve a cargar cuando dejas de interactuar con el. 

Este problema o ventaja en Android (según se mire) se soluciona completamente en los dispositivos de doble nucleo, ya que no es estresas al unico nucleo con varias operaciones a la vez, sino que cada nucleo se encarga de una tarea, uno de renderizar y otro de cargar.

Las otras causas de falta de fluidez que tiene Android nos las explica Ricardo Galli:

El problema de la latencia en Android es fundamentalmente un problema del scheduler. Android funciona mucho mejor con el “multitask” (en realidad “multiprogramación”) porque es un Linux y no han tocado prácticamente la gestión de procesos. Para arreglar este problema sólo tienen que mejorar el scheduler. Seguramente están trabajando en ello, y de hecho se ha mejorado mucho.
El otro problema que tiene Android es que cada proceso es una máquina virtual de Java separada al que han optimizado haciendo que se comparta la memoria de las librerías comunes (como hace naturalmente el Linux/UNIX) y código muy optimizado.
Los programas en Android están en ese código intermedio que es interpretado por la máquina virtual, en cambio en iOS es nativo del procesador (que da ventajas de velocidad, pero desventajas de portabilidad y diversidad, lo que solucionan con un sólo tipo de hardware). Seguramente hay cosas que se pueden mejorar, pero esta desventaja es cada vez menor con la ampliación de velocidad de procesadores, y sobre todo de caché.
Los schedulers no son una ciencia exacta, es algo bastante quisquilloso, con montón de “casos extremos” (corner cases) al que ir detectando y agregando heurísticas que se aprenden con la experiencia.
Es más que probable que el problema desaparezca (por tres razones fundamentales, las mejoras en el scheduler, la gestión de la máquina virtual de Java y la mejora del hardware).

Esta claro que los problemas se conocen, Google los admite, y se esta trabajando en ello.
Las mejoras son notables si comparamos las diferentes versiones de Android, así que se trabaja duro en este aspecto. Tanto es así que se han centrado básicamente en esto en el nuevo ICS y según parece las medidas que hayan tomado han surtido efecto, ya que hasta el momento los comentarios que he leído son muy favorables y cercanos o equiparables al sistema IOS en terminos de fluidez.






No hay comentarios:

Publicar un comentario