Szerző: Gálffy Csaba

2014. február 14. 14:46:00

Külön szálat kap a Chrome JavaScript-fordítója

A Chrome legújabb, egyelőre béta állapotú kiadása fontos újdonságot hoz a motorháztető alatt: a V8 JavaScript-motor immár külön szálon végzi a kód optimalizálását és végrehajtását, így a két feladat nem akasztja meg kölcsönösen egymást. Az eredmény: kevesebb fennakadással futó weboldalak.

A Chrome JavaScript-motorja, a V8 just-in-time (JIT) fordítót használ, vagyis a függvényekből csak közvetlenül első meghívásuk előtt készít gépi kódot, majd lefuttatja azt. Az első lépésben ezért egy gyors fordító dolgozik, amely viszonylag lassú gépi kódot generál a JavaScriptből, azt azonban villámgyorsan teszi. A következő lépcsőben a sűrűn használt függvények és kódrészletek további optimalizációt kapnak, ennek eredménye villámgyorsan végrehajtható alkalmazás lesz, az optimalizált újrafordítás azonban nagyon időigényes.

Jelenleg...

A problémát az okozza, hogy a V8 jelenlegi változata a JavaScript-motor fő szálán végzi a fordítást és a végrehajtást is. A gyakorlatban ez azt jelenti, hogy az optimalizáló fordítás idejére az alkalmazás futását felfüggeszti, ami a felhasználó számára jól érzékelhető fennakadást jelent a weboldal működésében. A Google által hozott példa az Octane benchmark Mandreel tesztje, ebben az optimalizáló fordítás akár 6 tizedmásodpeces akadást is összehozhat, míg a bonyolult programból hatékony gépi kód keletkezik.

Az új fejlesztésnek köszönhetően az optimalizáló fordítás külön, háttérben futó (alacsonyabb prioritású) programszálat kap, amely többmagos processzorokon akár külön magon is futhat. Az eredmény, hogy a két feladat immár futhat párhuzamosan, a JavaScript futása pedig sokkal folyamatosabbá válik ennek következtében. A fejlesztés a benchmarkokban is érezhető gyorsulást hoz, a már említett Mandreel tesztben például 27 százalékkal magasabb a mért teljesítmény azonos hardveren (Nexus 5).

...és hamarosan.

Mi történik egy mobilappal a születése után? Legtöbbször sajnos semmi. Ezen próbálunk változtatni egy ingyenes appmenedzsment meetuppal és egy 30 órás képzéssel.

A képen egyébként látható, hogy a kódoptimalizáció és maga a futtatás szinte ugyanannyi számítási kapacitást emészt fel a futás első néhány másodpercében. Az első 4500 ezredmásodpercben az optimalizáló fordító az idő 40 százalékát emészti fel, a futtatásra (az egyéb feladatok miatt) pedig csak 48 százalék jut. A leválasztott fordítóval a futtatás részaránya 74 százalékra tud emelkedni, a fő szálon futó fordítás pedig 14,5 százalékra zsugorodik. Ennél is fontosabb azonban a felhasználó szempontjából, hogy a drámai, több, mint fél másodperces szünet teljesen eltűnik, a legnagyobb akadás hossza mintegy 100 ezredmásodpercre csökken.

A JavaScript sebessége az elmúlt években látványosat lépett előre, a különböző böngészőgyártók motorjai pedig újabb és újabb innovációkkal gyorsítják az alkalmazások futását. Ennek köszönhetően az asztali gépeken már a natív alkalmazásokhoz mérhető felhasználói élményt nyújtanak a webes alkalmazások. A mobileszközök szerény sebességű processzorai számára azonban a komplex webes alkalmazások ma is nagy terhet jelentenek, így a fejlesztések legújabb célpontját már a telefonokra és tabletekre történő optimalizáció jelenti.

a címlapról

Hirdetés

Mi történik egy mobilappal a születése után?

2020. február 25. 14:59

Legtöbbször sajnos semmi. Ezen próbálunk változtatni egy ingyenes appmenedzsment meetuppal és egy 30 órás képzéssel. A store-ban való megjelenés az igazi munka kezdete: mérés, mérés, mérés, adat, felhasználói visszajelzések kezelése, ASO, monetizálás, marketing... és így tovább.