A PC emulator in Javascript, es un proyecto del reputado Fabrice Bellard, que demuestra como es posible emular un PC en lenguaje Javascript.

Parte del código de QEMU, del que Fabrice ha creado también una gran parte, para conseguir una emulación equiparable a un 486SX, con un rendimiento meritorio, pero todavía lejos de la realidad.

Si quitamos la curiosidad tecnológica, probablemente la mayor utilidad en A PC emulator in Javascript, sea la de utilizarlo como benchmark de máquinas Javascript en diferentes navegadores, por lo que me he tomado la libertad de ejecutarlo en las últimas versiones de los navegadores web disponibles para Windows, anotando el tiempo que han tardado en arrancar:

– Firefox 7.0a1 2011-06-01 (x86): 4,096s
– Opera 11.50.1027: 4,349s
– Firefox 7.0a1 2011-06-01 (x64): 4,749s
– Internet Explorer 9.0.8112.16421 (x86): 6,021s
– Internet Explorer 10.0.1000.16394 (x86): 6,464s
– Chromium 13.0.781: 6,550s
– Safari 5.0.5.7533.21.1: 9,676s
– Internet Explorer 9.0.8112.16421 (x64): 34,767s

Los resultados me parecen curiosos, ya que se esperaba que Opera o Chrome fueran los vencedores, pero ha ganado Firefox, lo que me hace pensar que gran parte del desarrollo de las máquinas virtuales Javascript, es la optimización de casos comunes y particulares.

También se nota como las versiones de 64 bits, están menos trabajadas, y contra todo pronóstico, resultan algo menos eficientes.

Cabe remarcar que el emulador se implementa en dos bases de código diferentes, la más veloz, usando Arrays con tipo, que de momento están soportados solamente en Chrome y Firefox, y otra sin ellos para el resto. Con esta limitación, Opera queda en segundo lugar, indicando que probablemente cuando se implemente esta capacidad, se obtengan cifras todavía mejores.