Actualmente estoy jugando con la idea de usar IFRAMEs para implementar un motor multihilo muy simple. Sin embargo, mis resultados iniciales me muestran que la ejecución en subprocesos es más lenta que la ejecución en un solo subproceso.es javascript multihilo posible con IFRAMEs
Mi prueba es:
solo hilo
var start = new Date().getTime();
for (var i = 0; i < 300; i++) { /* Do costly processor operations */ }
debug('Took: ' + new Date().getTime() - start);
Múltiples Hilos
var start = new Date().getTime();
// In thread 1
for (var i = 0; i < 100; i++) { /* Do costly processor operations */ }
// In thread 2
for (var i = 100; i < 200; i++) { /* Do costly processor operations */ }
// In thread 3
for (var i = 200; i < 300; i++) { /* Do costly processor operations */ }
// In a callback in the original FRAME (thread)
debug('Took: ' + new Date().getTime() - start);
Así como se puede ver, sólo estoy dividiendo la carga de trabajo entre los IFRAMEs (El código de la nota de arriba es solo para dar una mejor idea de lo que estoy haciendo, no está funcionando el código).
Así que estoy pensando que incluso con FRAMEs FireFox todavía tiene un solo motor JS? ¿Es correcta esta suposición? (haciendo estúpida mi investigación), ¿Son diferentes los navegadores diferentes?
Haciendo un rápido googles que obtuve este artículo: http://codediaries.blogspot.com/2009/12/real-javascript-multithreading-using.html
No obstante las mejoras de rendimiento obtenidos aquí son más que probable que acaba de hacer peticiones http paralelas en lugar de la potencia de procesamiento.
Gracias por su comprensión.
Guido
¿Qué le parece agregar algunos ceros al contador de bucles?Hazlo 10000, 20000 y 30000 respectivamente y ve lo que sucede. – chakrit
chakrit: Mis pruebas reales están usando miles de iteraciones, el ejemplo anterior es pequeño solo por simplicidad. – gatapia
Una cosa para asegurarse de que también tenga en cuenta es la resolución del temporizador de JavaScript, que a menudo es de 15 ms: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie