240 likes | 326 Views
Explore the benefits and implementation of Web Workers in JavaScript to offload computations, utilize multiple cores, and enhance browser performance without freezing the interface. Learn about compatibility, advantages, and real-world applications.
E N D
Többszálúság a böngészőben, avagy merjünk-e Javascriptben programot írni? Farkas MátéBudapest.js meetup 2010.04.14.
A Javascript nem erre való! http://weblabor.hu//blogmarkok/104451#comment-67266
A legnagyobb hátrány: • Amíg Javascriptben számítást végzünk, semmi más nem történhet a böngészőben • Kivétel jelenleg: Opera • És majd a Webkit 2 alapú böngészők
A megoldás: Web Worker • A Google Gears-féle WorkerPool szabványosítása, a HTML 5 része • A Worker egy teljesen különálló folyamatként dolgozik, csak a létrehozójával tud kommunikálni, és vele is csak üzenet küldéssel
index.html hello.js
Használati előnyök • A böngésző „lefagyasztása nélkül” tudunk hosszabb számításokat végezni • Kihasználhatóak a több magos processzorok • demo
Többszálú teljesítmény http://www.yafla.com/dforbes/Web_Workers_and_You__A_Faster_More_Powerful_JavaScript_World/
Böngésző támogatás • Chrome: minden worker új process • Safari: minden worker új szál • Firefox: nem string értékek küldése/fogadása is lehet • Opera: nem támogatja • Internet Explorer: nem támogatja
A Javascript lassú. PHP 5.2: 5,26 sec
Böngésző támogatás 2 • A HTML 5 Worker nem kompatíbilis a Gears-féle WorkerPool-lal • Volt több próbálkozás szimulálni ezt a viselkedést (jsworker, ie-web-worker), de egyik sem kielégítő
emulatedWorker.js • Elég ezt betölteni, és a Worker API-t használó Javascript futni fog minden böngészőben… • … de ettől nem lesz többszálú… • … és komolyabb adatszerkezetek-nél bonyolult az üzengetés
objectWorker.js • Egy intuitív absztrakció a Workerek használatához • (Típusjelzéssel ellátott) objektumok küldése/fogadása • Eljárás hívás
Összefoglalás • Kis odafigyeléssel ma már írhatunk programot Javascriptben • Weboldalak esetén egyszerűen küldhetjük háttérbe a számítási feladatokat • Worker-képes böngészővel teher-mentesíthető a szerverünk
Köszönöm a figyelmet! Farkas MátéBudapest.js meetup 2010.04.14.
Forráskódok, források • HTML 5 Web Workers http://www.whatwg.org/specs/web-workers/current-work/ • Mozilla MDC https://developer.mozilla.org/En/DOM/Worker • http://www.yafla.com/dforbes/Web_Workers_and_You__A_Faster_More_Powerful_JavaScript_World/ • http://ejohn.org/blog/how-javascript-timers-work/ • Forráskódok: http://fmate14.try.hu/2010/bpjs-objectWorker/ • objectWorker és emulatedWorker: http://code.google.com/p/object-worker/