A la espera del futuro Flash 8, que parece ser tendrá un rendimiento de hasta 10 mejor que la versión actual, me he decidido comparar la velocidad de cálculo de Flash 7, con la de otras tecnologías.

Para ello, he hecho un pequeño programa que se encarga de calcular los números primos existentes entre el 1 y el 10.000 e informar del tiempo invertido en el cálculo.

Posteriormente he portado el programa a algunos lenguajes comunes que tenía a mano.

Sinceramente, me he llevado una desagradable sorpresa al comprobar los resultados. Su desempeño ha sido menor que el de lenguajes puramente interpretados como Javascript o PHP. Es muy extraño, en principio Flash genera un bytecode que luego es interpretado por el reproductor de Flash, mientras que Javascript se interpreta totalmente, por lo que sobre el papel, Flash debería ser algo más eficiente.

Tampoco hubiera dicho nunca que Visual Basic .NET 2003 iba a ser algo más eficiente que Visual Basic 6.

La versión en Javascript la he probado con Internet Explorer y con Mozilla Firefox, los resultados han sido muy similares. Por fin el equipo de desarrollo de Gecko ha conseguido implementar un intérprete de Javascript con rendimiento equiparable al de Microsoft.

Como siempre, el código C++ arrasa con todos los contendientes, bueno, salvo con el código ensamblador x86, pero no tenía ganas de ponerme a prueba.

Los tests lao he ejecutado varias veces. En los casos en los que el tiempo de ejecución era muy breve, he aumentado el número de iteraciones para poder extrapolar de forma más precisa.

El equipo de pruebas era un Pentium 4 a 2800 con 1 Gb de RAM bajo Windows XP Professional SP2.

Estos son los resultados que he obtenido:

Herramienta Tiempo de ejecución (ms) Iteraciones por segundo
Visual C++ 7.1 145 34.482
Visual Basic .NET 2003 256 19.531
Visual Basic 6 SP5 260 19.230
PHP 5.0.2 1.470 2.940
Javascript (Firefox 1.0 RC1) 1.984 2.520
Javascript (Internet Explorer 6) 1.875 2.666
Flash 7.2 8.453 591

En todos los casos he intentado aplicar las opciones de compilación que podían generar un ejecutable más veloz.

Quizás en otras plataformas, los resultados varíen. En ese caso, me encantaría que me comunicarais vuestro balance.

Descargar los fuentes en todos los lenguajes, junto con los binarios precompilados (37 Kb. comprimido en ZIP).

Actualización
He estado dándole algunas vueltas a la versión de Flash para conseguir mejor rendimiento. Lo único que se me ha ocurrido es declarar el tipo de las variables, de forma que se asuman como numéricas en vez de como variant. Tras este cambio, el tiempo ha bajado hasta 8250 ms, tan solo una pequeña mejora.