Attualmente sto giocando con l'idea di utilizzare gli IFRAME per implementare un motore di multithreading molto semplice. Tuttavia i miei risultati iniziali mi mostrano che l'esecuzione in thread è più lenta di una semplice esecuzione in un singolo thread.è il multithreading javascript possibile con IFRAME
La mia prova è:
Single Thread
var start = new Date().getTime();
for (var i = 0; i < 300; i++) { /* Do costly processor operations */ }
debug('Took: ' + new Date().getTime() - start);
più thread
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);
Così come si può vedere, sto solo suddividendo il carico di lavoro tra i IFRAME (Il codice di cui sopra è solo per dare un quadro migliore di quello che sto facendo, non è un codice funzionante).
Quindi sto pensando che anche usando FRAME FireFox abbia ancora un solo motore JS? Questa supposizione è corretta? (rendendo la mia ricerca stupida), gli altri browser sono diversi?
facendo una rapida Googles ho ottenuto questo articolo: http://codediaries.blogspot.com/2009/12/real-javascript-multithreading-using.html
Tuttavia i miglioramenti delle prestazioni ottenuti qui sono più che probabile che solo facendo le richieste HTTP in parallelo piuttosto che la potenza di elaborazione.
Grazie per i vostri approfondimenti.
Guido
Che ne dici di aggiungere alcuni zeri al contatore di loop?Rendilo rispettivamente 10000, 20000 e 30000 e vedi cosa succede. – chakrit
chakrit: I miei test reali utilizzano 1000 di iterazioni, l'esempio sopra riportato è piccolo solo per semplicità. – gatapia
Una cosa per essere sicuri di prendere in considerazione è la risoluzione del timer JavaScript, che spesso è 15ms: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie