El boton de turbo en OSX
Y seguimos hablando de OSX, al final va a resultar que soy maquero y no lo sabia hasta ahora
El caso es que acabo de leer en Slashdot que OSX reduce el rendimiento de los programas que no son de Apple, donde se dice que Apple esta usando unas APIs no documentadas para darle una ventaja de rendimiento a Safari sobre otros navegadores.
Como es una cosa muy grave (a Microsoft se le han echado los perros encima por menos que eso), me he ido directamente a la fuente original de la noticia, el blog de un desarrollador de firefox, que habla de que han resuelto un problema de rendimiento en Firefox3 para OSX.
Resulta que la noticia de Slashdot es verdad y mentira al mismo tiempo:
Si, Resulta que Quartz, la capa gráfica de OSX, usa un sistema de refresco unificado que no actualiza la pantalla cuando la aplicación lo pide, sino que debe de esperar a que se produzca la siguiente actualización. Apple usa en Safari una API no documentada que permite a ese programa saltarse esa restricción y de esa manera Safari consigue un rendimiento de unos 60 fps mientras que Firefox3 (y supongo que todos los programas basados en Cocoa y que usen Quartz para presentar cosas en pantalla) se queda en unos 30.77 fps.
Y al mismo tiempo, no. Apple si que avisa de ese problema y da informacion para resolverlo (en una nota publicada hace mas de dos años), asi que las palabras “en secreto” no creo que sean acertadas en este caso, otra cosa es que no sea conocida por el común de los mortales.
La cosa es que debe de haber razones por las que Quartz imponga esas restricciones, no soy experto en ese tipo de tecnologías pero la explicación que se da en la nota técnica tiene algo de sentido y no es muy diferente a como trabajan los buffers gráficos con los que he trabajado (que no son muchos, ya digo que no soy ningún experto ni mucho menos en este tema) y al mismo tiempo proveen de dos maneras de saltarse esa limitación: Una a través de un fichero de configuración que esta perfectamente documentado y otra, de forma programática, a través de un interfaz que no esta documentado y del que no se sabe muy bien la licencia.
Una vez mas enterado de que va el asunto, me parece que el titular de Slashdot es algo tendencioso. Es cierto que este tipo de cosas solo puede ocurrir en sistemas operativos privativos. Que en linux o BSD no se podría esconder una funcionalidad así. Pero también es cierto que Apple provee de una alternativa para resolver ese problema y, como prueba de ello, Firefox3 en OSX ya no tiene esa restricción y tiene un rendimiento similar a Safari.
