Obecnie gram z pomysłem użycia IFRAME do wdrożenia bardzo prostego silnika wielowątkowego. Jednak moje wstępne wyniki pokazują, że uruchamianie w wątkach jest wolniejsze niż uruchamianie w jednym wątku.jest wielowątkowość javascript możliwe z IFRAME
Mój test jest:
pojedynczy wątek
var start = new Date().getTime();
for (var i = 0; i < 300; i++) { /* Do costly processor operations */ }
debug('Took: ' + new Date().getTime() - start);
wielu wątków
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);
Więc jak widać, jestem po prostu dzielenie obciążenia pracą wśród IFRAMES (Powyższy kod jest tylko po to, aby dać lepszy obraz tego, co robię, to nie działa kod).
Więc myślę, że nawet używanie FRAMEs FireFox nadal ma tylko jeden silnik JS? Czy to założenie jest poprawne? (czyniąc moje badania głupimi), Czy inne przeglądarki są inne?
robi szybki gogli Mam ten artykuł: http://codediaries.blogspot.com/2009/12/real-javascript-multithreading-using.html
Jednak poprawa wydajności osiągane tutaj są bardziej niż prawdopodobne, po prostu robi równoległych żądań http zamiast mocy obliczeniowej.
Dzięki za spostrzeżenia.
Guido
Co powiesz na dodanie zer do licznika pętli?Ustaw odpowiednio 10000, 20000 i 30000 i zobacz, co się stanie. – chakrit
chakrit: Moje prawdziwe testy używają 1000 iteracji, powyższy przykład jest mały tylko dla uproszczenia. – gatapia
Jedną z rzeczy, które należy wziąć pod uwagę, jest rozdzielczość timera JavaScript, która często wynosi 15 ms: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie