jueves, 15 de diciembre de 2011

¿Es Android más lento que iOS?



Durante la semana se produjo un interesante debate sobre dos de los sistemas operativos móviles más populares, iOS y Android. Todo ello comenzó tras una publicación de Dianne Hackborn en Google+ donde hablaba sobre parte de la historia de Android y algunas de sus particularidades.
Este post tuvo una respuesta por parte de Andrew Munn, también en Google+, donde daba su punto de vista sobre este tema. Los comentarios de Andrew pueden estar acertados, sin embargo como el propio indica puede que su opinión puede no ser del todo objetiva.
Durante la semana ha habido una nueva respuesta de Dianne Hackborn y multitud de comentarios sobre este tema en toda la red debatiendo sobre la siguiente cuestión: ¿es Android menos fluido que otros sistemas operativos, como iOS?.
La cuestión no es compleja y hay multitud de gente a favor y en contra sobre los comentarios de Andrew, quien indica que claramente Android tiene un problema. Además Munn señala en su post algunas cosas que parecen no ser demasiado correctas, cómo que Android fue pensado para ser un sistema operativo que se controlase mediante botones y joystick, similar a BlackBerry, y que dieron un cambio de dirección radical cuando se presentó el iPhone.



Dejando de lado este aspecto lo cierto es que parece claro que tanto el desarrollo de interfaz de iOS como Android son complejas, aunque en el caso de este último un poco más debido a algunas particularidades que tiene desde el comienzo de su desarrollo, y que además también tienen que ver mucho con la propia filosofía de cada proyecto.
Si damos respuesta a la anterior pregunta podemos de que si, Android es menos fluido que iOS, pero teniendo en cuenta muchos matices, el primero de ellos es que el sistema operativo móvil de Apple está pensado para funcionar en un determinado hardware y está optimizado para este, lo cual ayuda mucho en lo que a rendimiento se refiere. Mientras tanto Android busca ser un sistema operativo accesible para cualquier fabricante que quiera instalarlo en sus dispositivos lo cual es bueno pero añade diversos retos. Necesita ser compatible con más tipos de hardware y eso hace que no se pueda optimizar tanto, y a menudo se necesita hacer uso de la aceleración por hardware para determinados procesos.
El principal hándicap con el que se encuentra Android y que comenta Andrew es que mientras iOS destina procesos independientes y prioriza mejor los procesos Android no es tan efectivo. Él pone un ejemplo muy claro y que podemos probar todos los que tengamos a mano un dispositivo con estos sistemas operativos: probar a cargar una página web y mientras ésta se está cargando intentar hacer zoom sobre una parte de la página. En el caso de iOS se da prioridad a los movimientos que hace el usuario sobre la pantalla parando la ejecución de la carga de la página, mientras que Android continua ejecutando ambos proceso, es decir, está interpretando las instrucciones que da el usuario y además renderizando la página web que estamos cargando. Esto es simplemente debido a que iOS tiene un mejor control de las prioridades de los procesos que Android, aunque esto es algo que en este último ha estado mejorando últimamente y promete continuar mejorando. Si quieres tener datos más técnicos sobre este asunto Ricardo Galli escribió un post muy bueno sobre el tema. A modo de resumen algunas cosas importantes que explica Ricardo son:
  • Los sistemas Unix (como Linux o Darwin) no son en tiempo real, por lo que necesitan de un planificador de procesos para controlar efectivamente lo múltiples procesos, también conocido como multitarea.
  • Para obtener respuestas en tiempo real es necesario rebajar lo máximo posible los requisitos del sistema operativo, aumentando el control que se ejerce sobre las aplicaciones.
  • Como es normal las aplicaciones también pueden tener culpa de un mal comportamiento del sistema operativo, si por ejemplo éstas consumen más CPU de la necesaria.
  • Apple decidió usar Objetive-C para la programación de las aplicaciones en iOS, mientras que Android opto por Java. Objetive-C es un lenguaje de código ejecutable y es más rápido al ejecutarse sobre el procesador mientras que Java se ejecuta sobre una máquina virtual, donde la gestión de la memoria y la cache no es tan efectiva.
  • Android usa un sistema muy complejo e interesante, cuando se arranca el sistema se carga la máquina virtual y diferentes librerías, después cada aplicación se ejecuta como una hija de esta, ahorrando eficiencia y mucha memoria.
  • Android lleva tiempo mejorando el control de su scheduler del mismo modo que lo lleva haciendo Linux. No es una tarea sencilla y señala que los drivers de la pantalla pueden tener que ver en un rendimiento pobre, si son de mala calidad.
  • Por último, un punto que indica y resumen todo el asunto: optar por la apertura tiene costes técnicos iniciales, optar por el software libre tiene costes técnicos iniciales, pero producir una plataforma totalmente bajo control también tiene costes (sociales), y a más largo plazo.
En definitiva cualquiera de nosotros puede ver si el rendimiento de Android es más o menos fluido que el de iOS, pero del mismo modo que sacamos una conclusión simple diciendo que puede ser menos fluido también tenemos que tener en cuenta una premisa muy cierta, no es lo mismo fabricar un coche para que dé su máximo rendimiento sobre un asfalto conocido, estable y con pocos cambios que hacerlo para calles con badenes y baches y cambios de adherencia del suelo.

Fuente: http://appleweblog.com

3 comentarios:

  1. Si los llenas de porquería instalando cualquier cantidad de apps y tweaks que te pasen por delante cualquier sistema se potea. He tenido variedad de smart phones en mis manos, desde windows mobile, android, wp7 y ahorita ios y como dije antes, si les metes mucha caña joder tío pos se potean. Quizas iOS pudiera ser un poco más estable pero por las mimas restricciones del sistema que no te deja inventar mucho con el como quizas si se pueda hacer en android, lo mismo pasó con windows mobile, que se podía tweakear como quisieras pero al final del día tenías un smart phone poco eficiente, cosa que corrigieron con WP7 haciendo un sistema poco tweakeable donde Microsoft tienen mayor control sobre los updates etc como en el caso de iOS. Por lo contrario Android tiene miles de versiones, tweaks etc, y además dependiendo del fabricante tiene diferentes launchers lo que hace que los updates NO lleguen al mismo tiempo a todos los dispositivos android. Apple siempre ha tenido esto en sus manos y Microsoft así lo está haciendo con WP7.

    ResponderEliminar
  2. claro, aunque no se refiere tanto al poteo por apps sino al rendimiento en general, puede que apple lo tenga mejor controlado por solo utilizazr el mismo equipo, pero en caso de android son muchos los fabricantes. A mi me parece que con un equipo androidd de ciertas caracteristicas minimas (sobre todo CPU 800 en adelante) las apps y el SO en general se portan baastante bien. En mi casoi con el HTC Desire HD lo he puesto a prueba y he tenido (y por lo general estan) abiertas varias apps a la vez y el telefono se porta genial. Lo he probedo con whatsapp, facebook, twitter, heytell, viber, skype, alguna app pesada (juego o teamviewer), reproductor de música y navegador abiertos al mismo tiempo y va normal. Lo que si me parece es que deberian trabajaar más en la duración de las baterias porque en mi caso dificilmente pasa de las 16 horas de duración =/

    ResponderEliminar