SlideShare una empresa de Scribd logo
1 de 24
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
Perl 5.10: 3,26 sec
Google Chrome 5: ??? sec
Google Chrome 5: 0,05 sec
Egy másik teszt
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
Az objectWorker használata
A worker.js
Bonyolult? – Nem, sőt!
Na és az Internet Explorer?
Ö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/

Más contenido relacionado

Destacado

What Do "Cage-Free" and "Free-Range" Egg Labels Mean?
What Do "Cage-Free" and "Free-Range" Egg Labels Mean? What Do "Cage-Free" and "Free-Range" Egg Labels Mean?
What Do "Cage-Free" and "Free-Range" Egg Labels Mean? Maral Cavner
 
Allarangen fiber infomöte 3 september 2015
Allarangen fiber infomöte 3 september 2015Allarangen fiber infomöte 3 september 2015
Allarangen fiber infomöte 3 september 2015allarangenfiber
 
2015 deep market research report on global purified terephthalic acid industry
2015 deep market research report on global purified terephthalic acid industry2015 deep market research report on global purified terephthalic acid industry
2015 deep market research report on global purified terephthalic acid industryResearch Hub
 
Conoscere il percorso del Nordic Walking Park di Brenzone sul Garda
Conoscere il percorso del Nordic Walking Park di Brenzone sul GardaConoscere il percorso del Nordic Walking Park di Brenzone sul Garda
Conoscere il percorso del Nordic Walking Park di Brenzone sul GardaLuigi Perotti
 
Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...
Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...
Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...Camilo Saenz
 
Proyecto escuela comunidad
Proyecto escuela comunidadProyecto escuela comunidad
Proyecto escuela comunidadOmar Gardie
 
El mundo subdesarrollado
El mundo subdesarrolladoEl mundo subdesarrollado
El mundo subdesarrolladoMercedes Díaz
 

Destacado (8)

What Do "Cage-Free" and "Free-Range" Egg Labels Mean?
What Do "Cage-Free" and "Free-Range" Egg Labels Mean? What Do "Cage-Free" and "Free-Range" Egg Labels Mean?
What Do "Cage-Free" and "Free-Range" Egg Labels Mean?
 
Allarangen fiber infomöte 3 september 2015
Allarangen fiber infomöte 3 september 2015Allarangen fiber infomöte 3 september 2015
Allarangen fiber infomöte 3 september 2015
 
2015 deep market research report on global purified terephthalic acid industry
2015 deep market research report on global purified terephthalic acid industry2015 deep market research report on global purified terephthalic acid industry
2015 deep market research report on global purified terephthalic acid industry
 
Conoscere il percorso del Nordic Walking Park di Brenzone sul Garda
Conoscere il percorso del Nordic Walking Park di Brenzone sul GardaConoscere il percorso del Nordic Walking Park di Brenzone sul Garda
Conoscere il percorso del Nordic Walking Park di Brenzone sul Garda
 
Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...
Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...
Servicio de desarrollo de Apps para iPhone, Android y Kindle ofrecido por App...
 
Proyecto escuela comunidad
Proyecto escuela comunidadProyecto escuela comunidad
Proyecto escuela comunidad
 
Osztályozzunk!
Osztályozzunk!Osztályozzunk!
Osztályozzunk!
 
El mundo subdesarrollado
El mundo subdesarrolladoEl mundo subdesarrollado
El mundo subdesarrollado
 

Similar a Többszálú javascript

Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenKrisztián Gyula Tóth
 
Webapplication development with HTML5 and GWT
Webapplication development with HTML5 and GWTWebapplication development with HTML5 and GWT
Webapplication development with HTML5 and GWTPéter Nagy
 
Nagy Péter: Google App Engine. Programozzunk felhőt
Nagy Péter: Google App Engine. Programozzunk felhőtNagy Péter: Google App Engine. Programozzunk felhőt
Nagy Péter: Google App Engine. Programozzunk felhőtMeetOFF
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanPal Vojacsek
 
Cgi röviden ajmar
Cgi röviden ajmarCgi röviden ajmar
Cgi röviden ajmarbonami2014
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaFerenc Kovács
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaFerenc Kovács
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddalthesnufkin
 
Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Hajas Tamás
 
CMS en túli webes megoldások
CMS en túli webes megoldásokCMS en túli webes megoldások
CMS en túli webes megoldásokTamas Rigo
 
Webes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaWebes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaAntal Bodnar
 
HTML5 esettanulmányok
HTML5 esettanulmányokHTML5 esettanulmányok
HTML5 esettanulmányokZoltán Dávid
 

Similar a Többszálú javascript (20)

Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 
Webkonf 2013
Webkonf 2013Webkonf 2013
Webkonf 2013
 
Webapplication development with HTML5 and GWT
Webapplication development with HTML5 and GWTWebapplication development with HTML5 and GWT
Webapplication development with HTML5 and GWT
 
Nagy Péter: Google App Engine. Programozzunk felhőt
Nagy Péter: Google App Engine. Programozzunk felhőtNagy Péter: Google App Engine. Programozzunk felhőt
Nagy Péter: Google App Engine. Programozzunk felhőt
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorban
 
Cgi röviden ajmar
Cgi röviden ajmarCgi röviden ajmar
Cgi röviden ajmar
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
A Firefox-on túl is Mozilla
A Firefox-on túl is MozillaA Firefox-on túl is Mozilla
A Firefox-on túl is Mozilla
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálása
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosítása
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddal
 
Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal
 
CMS en túli webes megoldások
CMS en túli webes megoldásokCMS en túli webes megoldások
CMS en túli webes megoldások
 
Webes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaWebes alkalmazások optimalizálása
Webes alkalmazások optimalizálása
 
Atszokás Oracle-ről PostgreSQL-re
Atszokás Oracle-ről PostgreSQL-reAtszokás Oracle-ről PostgreSQL-re
Atszokás Oracle-ről PostgreSQL-re
 
HTML5 esettanulmányok
HTML5 esettanulmányokHTML5 esettanulmányok
HTML5 esettanulmányok
 
Dcourse ctools
Dcourse ctoolsDcourse ctools
Dcourse ctools
 

Más de Máté Farkas

Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScriptMáté Farkas
 
Git és/vagy Subversion
Git és/vagy SubversionGit és/vagy Subversion
Git és/vagy SubversionMáté Farkas
 
Egyszálú JavaScript
Egyszálú JavaScriptEgyszálú JavaScript
Egyszálú JavaScriptMáté Farkas
 
ECMAScript 5 Classes
ECMAScript 5 ClassesECMAScript 5 Classes
ECMAScript 5 ClassesMáté Farkas
 
Automatikus pontosvessző beszúrás a JavaScriptben
Automatikus pontosvessző beszúrás a JavaScriptbenAutomatikus pontosvessző beszúrás a JavaScriptben
Automatikus pontosvessző beszúrás a JavaScriptbenMáté Farkas
 
CSS előfeldolgozók
CSS előfeldolgozókCSS előfeldolgozók
CSS előfeldolgozókMáté Farkas
 

Más de Máté Farkas (8)

Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
 
Git és/vagy Subversion
Git és/vagy SubversionGit és/vagy Subversion
Git és/vagy Subversion
 
Egyszálú JavaScript
Egyszálú JavaScriptEgyszálú JavaScript
Egyszálú JavaScript
 
ECMAScript 5 Classes
ECMAScript 5 ClassesECMAScript 5 Classes
ECMAScript 5 Classes
 
Use strict
Use strictUse strict
Use strict
 
IEEE-754
IEEE-754IEEE-754
IEEE-754
 
Automatikus pontosvessző beszúrás a JavaScriptben
Automatikus pontosvessző beszúrás a JavaScriptbenAutomatikus pontosvessző beszúrás a JavaScriptben
Automatikus pontosvessző beszúrás a JavaScriptben
 
CSS előfeldolgozók
CSS előfeldolgozókCSS előfeldolgozók
CSS előfeldolgozók
 

Többszálú javascript

Notas del editor

  1. Kezdetben volt a HTML…
  2. 10ms timeout és 10ms interval. A Dropped-nél másodjára került volna bele. Megemlíteni, honnan van.
  3. Demo: natív módban
  4. Fibonacci az MDC oldalán
  5. Meg kell különböztetni a weboldalt és a web alkalmazást!
  6. Most hagyjuk egy kicsit a workereket!
  7. Jsworker: globális scope-ba teszi az importScripts dolgokat. Ie-web-worker: külön api. Mindkettő csak próbálkozás volt, nem tartják karban.