Windows, qué te ha pasado: hace 20 años abrías las aplicaciones en un instante y ahora vas a pedales

Julio Merino es un ingeniero software nacido en Barcelona que actualmente vive en Seattle. Hace unos días decidió hacer un experimento. Rescató un viejo PC del año 2000 con un Pentium a 600 MHz, 128 MB de RAM y un disco duro tradicional. Al encenderlo comprobó algo asombroso: las aplicaciones de Windows NT 3.51 (recién instalado) se abrían de forma instantánea.

Este usuario no se conformó con eso y quiso repetir la prueba, pero con un sistema operativo algo más moderno. Instaló Windows 2000 en la misma máquina, y al hacer las mismas pruebas y abrir aplicaciones comprobó cómo todas ellas se abrían en un instante. Los tiempos de respuesta eran casi inexistentes, y la sensación era la de que todo se ejecutaba con una velocidad extraordinaria. Explicó esto —y mucho más— tanto en Twitter como en un largo post en su blog.

Luego hizo la misma prueba con un Suface Go 2 mucho más reciente y basado en un Core i5 a 2,4 GHz, 8 GB de RAM y una unidad SSD. Siguió la misma secuencia de apertura de aplicaciones con una instalación limpia de Windows 11 y comprobó como los tiempos de apertura eran mucho más lentos. ¿Qué estaba pasando?

Uno podría decir que ese Surface Go 2, aun siendo mucho más moderno que aquel PC de 1999-2000, no tenía unas especificaciones realmente altas para ejecutar un sistema operativo exigente como Windows 11. Merino lo tuvo en cuenta y quiso realizar esta prueba, pero hacerlo en un Mac Pro con un procesador de seis núcleos a 3,5 GHz y con 32 GB de RAM. No deja claro si ejecutó Windows con Bootcamp o con virtualización, pero en cualquier caso el vídeo mostrado era llamativo en cuanto a esos tiempos de apertura.

Como él mismo explicaba, incluso con las aplicaciones en caché, renderizarlas parecía llevar mucho trabajo, e iban apareciendo "a cachos". Como él destacaba, "no es por las animaciones o por un hardware mediocre". 

Tampoco tenía que ver con el hecho de trabajar en resolución 4K, y aun desactivando las animaciones se notaba que una máquina y un sistema operativo modernos iban aparentemente más lentos que una máquina y un SO de hace más de 20 años. 

La pregunta, claro, es inevitable. ¿Qué está pasando?

Los PCs y SSOO de hace 20 años no eran mejores (salvo en algunas cosas)

El propio usuario comentaba en un hilo en Hacker News cómo su intención no era transmitir un mensaje del tipo "las máquinas y SSOO de hace 20 años eran mucho mejores" porque como él decía, eso no era cierto. De hecho, explicaba, "apestaban en muchos aspectos".

Las cosas han mejorado en muchísimos apartados, y tenemos ordenadores y software que hacen cosas impensables hace 20 años tanto en el desarrollo y ejecución de aplicaciones como en herramientas profesionales, juego o contenidos de vídeo y audio.

Los avances han sido espectaculares, pero no todo parece ser mejor: las modernas interfaces de usuario se han vuelto algo más lentas (pero también más elegantes, personalizables y espectaculares), e incluso en PCs y portátiles de última generación uno puede notar cómo lanzar una aplicación puede llevar más tiempo del esperado.

Abstracción (y muchas cosas más), culpables

Hay varias razones por las que ocurre algo así, y una de ellas es ciertamente cómo la propia evolución del software y el hardware se ha complicado. Nuestras máquinas y nuestro software hace más cosas, pero para hacerlas bien necesita resolver muchos problemas y lograr que los componentes hardware y software se comuniquen ("se hablen") de forma adecuada.

Que un usuario quiera abrir una ventana del explorador de archivos, aun pareciendo trivial, requiere que el sistema operativo se hable con el hardware para que tanto el subsistema de entrada salida como el subsistema gráfico (entre otros) logren mostrar las carpetas y archivos y lo hagan a través de una ventana "dibujada" o renderizada por el hardware del chip gráfico.

Esa comunicación entre el hardware y el software se realiza con las llamadas capas de abstracción de hardware (HAL, por Hardware Abstraction Layer). Las aplicaciones no acceden directamente al hardware y sus recursos, sino que lo hacen a una capa abstracta proporcionada por esa tecnología. Eso permite que las aplicaciones sean independientes del hardware y no tengan que preocuparse por detalles

Pero es que a las capas de abstracción se le suman otros muchos componentes (y problemas) generados por la estructura de los sistemas operativos modernos. Puede que los procesos no se hayan programado de forma asíncrona, que no haya suficientemente palarelismo, o que los sistemas de paso de mensajes y sincronización (quienes hayan estudiado este ámbito seguramente que recuerdan los mutex) no estén del todo afinados.

Por si fuera poco, en los sistemas operativos modernos hay un montón de servicios y de software que funcionan en segundo plano y que quizás no serían necesarios en muchos escenarios. No ya procesos de sistema, sino procesos de aplicaciones que vamos instalando y que "piden sitio" para ejecutarse desde que arrancamos el PC.

De hecho, hasta Steven Sinofsky, que fue responsable del desarrollo de Windows 7 y también de Windows 8, respondió con un comentario también interesante: los sistemas operativos modernos integran un navegador web, que es algo así como un sistema operativo en sí mismo.

El problema de la ralentización de Windows (y otros sistemas operativos) es de sobra conocido. De hecho este comportamiento confirma la conocida ley de Wirth, que nos dice que "el software se ralentiza más deprisa de lo que se acelera el hardware". Hace unos años los expertos de NTDotDev realizaron un análisis detallado de cómo el rendimiento de Windows 10 había ido empeorando con el paso del tiempo.

Con cada versión de Windows 10, el tiempo de apertura de aplicaciones UWP empeoraba en casi todos los casos. Fuente: NTDotDev.

Las sucesivas versiones de Windows 10 —con sus grandes actualizaciones incluidas— llegaban con mejoras interesanes, pero también con problemas añadidos. La degradación del rendimiento en ciertos apartados era una de ellas, y componentes como UWP o el soporte de las aplicaciones Win32 (las "antiguas") perjudicaban la experiencia de usuario general.

Este tipo de análisis también aparecían en casos peculiares. Bruce Dawson, empleado de Google, contaba hace unos meses su particular "pelea" con la grabadora de voz de Windows, que tardaba demasiado en abrirse y que funcionaba casi "a pedales".

Dawson, experto en el perfilado de procesos con herramientas como ETW (Event Tracing for Windows) acabó analizando la traza de ejecución y comprobando cómo varios procesos —y en especial uno clave, el llamado RuntimeBroker— alargaban su ejecución de forma inexplicable. Una desarrolladora llamada Katelyn Gadd le contestaba en Twitter indicando posibles razones y dando una opinión en la que muchos probablemente pensamos: "alguien fue probablemente perezoso".

¿Se han vuelto los programadores perezosos? Es también una vieja pregunta que hace referencia a cómo han cambiado los tiempos en materia de hardware. Antes los desarrolladores se las ingeniaban para crear aplicaciones y juegos prodigiosos con recursos ínfimos. Cuenta la leyenda que en 1981 Bill Gates pronunció aquella famosa frase de que "640K deberían ser suficientes para cualquiera".

Gates negó haber dicho algo así, pero lo cierto es que la sensación para muchos parece ser esa: la de que los programadores "de antes" aprovechaban mejor los recursos. Como ahora tenemos acceso a máquinas exponencialmente más potentes y con más recursos, "no hace falta esforzarse tanto" a la hora de crear programas eficientes porque el hardware ya compensa que el código pueda ser algo "perezoso".

¿Es eso cierto? En ciertos casos, desde luego. Lo hemos visto con el framework Electron, que se ha usado mucho para encapsular aplicaciones web y presentarlas como aplicaciones nativas de Windows. Eso ahorraba mucho tiempo y esfuerzo a las empresas desarrolladoras de software, pero ha quedado demostrado que desarrollar aplicaciones "nativas" hace que la experiencia de usuario y el consumo de recursos mejore de forma notable.

Así pues, puede que haya desarrollos perezosos, pero no lo serán ni mucho menos todos. Como veníamos comentando, en realidad la degradación del rendimiento es culpa de la propia evolución de la informática: nuestros sistemas operativos, nuestro hardware y nuestro software hacen todo lo que hacían antes y muchísimo más, pero para lograrlo es necesario contar con un buen montón de componentes —algunos más pulidos que otros— que antes no teníamos.

Imagen | Julio Merino

En Xataka | Recuperar la velocidad de un ordenador lento: 15 formas de acelerar el PC

Ver todos los comentarios en https://www.xataka.com

VER 46 Comentarios

Portada de Xataka