Web Worker многопоточность в JavaScript

Рассчитаем число Pi в 5000 знаков воспользовавшись Web Worker, setTimeout, и без использования разбора очереди setTimeout или многопоточности(Multithreading) Web Worker, цикл в основном (и единственном) потоке JavaScript. Сравним время выполнения, ощущения по блокировки графического интерфейса (UI). Воспользуемся формулой Джона Мачайна John Machin
π=16arctan(15)4arctan(1239)
arctanx=xx33+x55x77+x99
Web WorkersetInterval(0) (на каждую итерацию)цикл while
Pi
Код под капотом.
Мои итоги, плюс Web Worker? работа в отдельном потоке, никакого влияния на основной поток, отсутствие задержки setTimeout, на каждый вызов порядка 10мс, и это если в это время очередь не занята еще чем-либо, например, визуальными эффектами jQuery, да и при setTimeout приходится модифицировать код задачи, итерации делить по вызовам setTimeout. Минус, хотя это и не минус, по другому быть и не может, отсутствие доступа к не потокобезопасным ресурсам DOM, window, document, parent. Где же использовать практически, однооконные веб-приложения с некими относительно тяжелыми расчетами, мне решать такую задачу пока не приходилось.
И еще, FF тормоз, см. скрин, все три теста на одной машинке.

Варианты тестов на разных браузерах и машинках. Google Chrome Internet Explorer Mozila Firefox

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *