Javascript - Internet Explorer 10 - Windows 8 - ieblog orosz
Teljesítmény valós webes alkalmazások
teljesítményének mérését webes alkalmazások
Belső feladatok Chakra
- Mennyiségének minimalizálása végzett munka a kritikus úton felhasználói interakció. Ez magában foglalja a végrehajtása késedelmet a lehető legnagyobb mértékben a munka, amíg e nélkül nem lesz lehetetlen csinálni, egy teljes munka megszűnését, a használata az inaktív időszakokat és párhuzamosítását munkát annak érdekében, hogy minimálisra csökkentsék a befolyása a válaszidő a kérelmet.
- Kihasználva a rendelkezésre álló hardver. Ez azt jelenti, az összes rendelkezésre álló CPU magot, valamint létrehozását szakosodott fejlett CPU utasítás, mint például az Intel SSE2, ha van ilyen.
A párhuzamos architektúra Chakra felvezető
Ha ez a szám elér egy bizonyos küszöböt, az értelmező funkció továbbítja váró összeállítása. Eltérően más böngészők JIT-fordító Chakra elindított egy külön dedikált szál, és nem érinti a szkriptek végrehajtását. Az egyetlen probléma az, hogy a fordító, hogy hozzon létre optimalizált gépi kód az egyes funkciókat a fordítási szakaszban. Összeállítása után funkciót a fő téma a forgatókönyvet küldött jel a rendelkezésre álló gépi kód. Ha a következő hívás a belépési pont funkció van irányítva az újonnan lefordított gépi kód, a végrehajtás az közvetlenül a CPU. Meg kell jegyezni, hogy a funkciók, melyeket az úgynevezett egyszer vagy kétszer, soha össze, így időt és erőforrásokat.
Kis oldal betöltési ideje
Optimáljunk forgatókönyvek, Chakra hordozza csak a legalapvetőbb elemzési forráskódját. A többi munka (az építési abstract syntax tree és létrehozta a bájtkódot) hajt végre egy funkció egy időben, és csak akkor, ha a megfelelő funkciót hamarosan hívják. A fenti stratégia nem csak segít, hogy javítsa a válaszadási sebessége a böngésző betöltése közben weboldalakat, hanem csökkenti a használt memória mennyiségét.
Felülvizsgálata és javítása JIT-fordító
funkció Compute (v, w)
Az Internet Explorer 9 Chakra fordítóprogram I kódot állít elő, amely érzékeli az egyes tulajdonságok futás közben, és megbízhatóan kezelni minden lehetséges műveletek (a fenti példában az összeadás egészek hozzáadásával lebegőpontos számok vagy szövegösszefűzés). Egyes műveletek kezelik közvetlenül a gépi kódban, szükség más futási Chakra.
Tolmács adatokat gyűjt megfigyelhető, hogy elindítja, de valószínű, hogy a program vezet az ezen értékek a futás, ami sérti a használt feltételezéseket létrehozására optimalizált kód. Mert minden egyes vett feltételezések fordító ellenőrzi a futás során. Ha van egy későbbi végrehajtása során a várt érték, a beolvasás befejeződött a kudarc, teljesítő vészhelyzetben módja származik egy speciális gépi kódra és folytatódik a tolmács. Felvett az oka ennek a riasztási kimenet (rossz ellenőrzés), a tolmács további információt gyűjt a profilra, majd a recompiled funkció a különböző feltételezéseket. A vészleállító és újrafordítás két teljesen új funkciók az Internet Explorer 10.
Ennek eredményeként, Chakra fordítóprogram az Internet Explorer 10 teszi kevésbé kódot, gépi kódot, amely csökkenti a teljes memória használat és a gyorsabb végrehajtás. Ez egy különösen erős hatással van a kérelmek aritmetikai műveletek lebegőpontos műveletek eléréséhez objektumok tulajdonságait, amelyek magukban foglalják a szimuláció és a HTML5 játékok.
Gyorsítás aritmetikai lebegőpontos műveletek
funkció findString (s, a)
for (var i = 0, al = a.length; i
függvény Compute (a, b, c, d)
hozam (a + b) * (c - d);
Az Internet Explorer 10, a fordító használja az előnye a profil által gyűjtött információk a tolmács, hogy hozzon létre kód, amely összehasonlíthatatlanul gyorsabb feldolgozás lebegőpontos értékeket. Ha a fenti példában a profil azt jelenti, hogy minden érv valószínűleg lebegőpontos számok, a fordító kiadja a gépi utasítások lebegőpontos értékeket. Teljesen ezt a kifejezést fogják kiszámítani mindössze három gépi utasítások (feltéve, hogy minden érv már regiszterek), minden közbenső értékeket tároljuk a nyilvántartások és visszatér a végeredmény elég csak egy elosztó a kupac.
Azoknál az alkalmazásoknál, ahol sok lebegőpontos műveletek kínál elképesztő teljesítményt méretezés. Kísérletek azt mutatják, hogy a lebegőpontos műveleteket az Internet Explorer 10 fut mintegy 50% -kal gyorsabb, mint az Internet Explorer 9. Ezenkívül, a csökkentés a lefoglalt memória számának csökkentése szemetet gyűjtemények.
Gyorsabb hozzáférés a tárgyak és tulajdonságok
vissza Math.sqrt (e .x * e .x + e .y * e .y + e .Z * e .z);
Az Internet Explorer 9, már bevezetett egy beépített cache, amely jelentősen felgyorsult a hozzáférést a tulajdonságokat. Beépített cache tárolja a tárgy alakja és elhelyezkedése a tárgy a memóriában, ahol megtalálható az adott tulajdonság. Chip cache memória tárolhat csak egy tárgy alakját és akkor hatásos, ha az összes olyan objektumot, amellyel a munkálatok funkció azonos alakúak. Az Internet Explorer, hozzáadunk 10 másodlagos cache mechanizmus, ami javítja a teljesítményt a kódot, azzal a céllal, különböző formájú (polimorfizmus).
Olvasás előtt értékét a fordító ellenőriznie kell, hogy a forma felel meg a tárgy alakja tárolt belső gyorsítótár. Ehhez a fordító az Internet Explorer 9, mielőtt minden hozzáférést az ingatlan ellenőrzi a formák a futás során. Mivel a programok gyakran olvasni vagy írni több tulajdonság ugyanazon objektum egy sorban (ahogy az az alábbi példában), ezeket a vizsgálatokat növekvő idő többletköltségeket.
funkció Collide (B1, B2)
var dx = b1.x - b2.x;
var dy = b1.y - b2.y;
var DVX = b1.vx - b2.vx;
var DVY = b1.vy - b2.vy;
var distanceSquare = (dx * dx + dy * dy) || 1,0;
Chakra az Internet Explorer 10 generál kódot arra összpontosít, hogy a várt tárgy alakja. Gondos megfigyelés szimbólumok együtt lehetséges vészleállító és újra összeállítja az új fordító jelentősen csökkenti az ellenőrzések számát formájában futás közben. A fenti példában a 8 helyett egyedi végrehajtott vizsgálatok minden formáját 2 - az egyik a B1 és B2. Továbbá, a telepítés után a tárgy formáját tulajdonságai ismertek elrendezés azonban olvasási vagy írási művelet nem történik olyan hatékonyan, mint a C ++.
Az ECMAScript 5 tartalmazhatnak új típusú tulajdonságokat nevezzük tulajdonságait hozzáférési mód. Az ingatlan a hozzáférési mód eltér a hagyományos tulajdonságait adat hívás egyedi funkciókat kap, és állítsa be a feldolgozás olvasási és írási műveletek. Az ingatlan a hozzáférési módszer kényelmes mechanizmust hozzátéve adatok beágyazás számított tulajdonságok, az adatok érvényesítését és a Változások bejelentése. Tervezésekor és belső típusú rendszer fedélzeti cache Chakra felvezető lett ellátva tulajdonságait kompatibilitás és a hozzáférési módszer hatékonyan írni és olvasni értékeket.
var Vector = függvény (x, y, z)
var m = Math.sqrt ((e .x * e .x) + (e .y * e .y) + (e .Z * e .Z));
vissza új Vector (e .x / m, ez a .y / m, ez a .Z / m);
add. funkció (v, w)
vissza új Vector (w.x + v.x, w.y + v.y, w.z + v.z);
keresztezik egymást. funkció (v, w)
vissza új Vector (-v.z * w.y + v.y * w.z, v.z * w.x - v.x * w.z, -v.y * w.x + v.x * w.y);
javítása szemétgyűjtő
Az Internet Explorer 10, már többször javulást a folyamatok memória kiosztása és szemétgyűjtés. Azt már láttuk, a változások a szerkezetben a tárgyak és a létrehozását számítógépes kód alapján a számtani lebegőpontos műveleteket, csökkentve ezzel a memóriát. Továbbá, most kiosztása Chakra levélobjektumokat (például, a száma és sorok) az egyes memória terület. Célok nem tartalmaznak mutatókat más tárgyakat, így nem kell eltávolítani a szemétgyűjtő annyi figyelmet, mint a szokásos lehetőségek. Kiosztása célok egy adott terület által nyújtott két előnye van. Először is, egy lépésben jelölés ezt az egész területet elhagyható, ezzel csökkentve a teljes időtartama alatt a szakaszban. Másodszor, a kombinációs szemétgyűjtő új válogatást területén véges tárgyak nem igényelnek újra ellenőrzi az érintett oldalakat. Mivel a kollektor Chakra fut párhuzamosan a fő téma a szkript fut script módosíthatja vagy objektumok létrehozásához már feldolgozott oldalak. Ahhoz, hogy megelőzzük a korai gyűjteménye ilyen tárgyak a színpad előtt van beállítva jelölő Chakra oldal írásvédettséget. Oldalak, ahol a lépés jelölés felvétel folyamatban van, és később kell alávetni újra-scan a fő áramlási a forgatókönyvet. Ami a célokat ilyen kezelésre van szükség, a terület véges tárgyak oldalak nem kell védeni írásban vagy újra-scan később. Ez értékes időt takarít meg a fő áramlási a forgatókönyvet, és vágja a szünet. Ez a változás nagyon hasznos animációk és HTML5 játékok mivel gyakran túlterheltek a lebegőpontos műveleteket használnak, és egy jelentős része kiosztott memóriát szám, tele egy halom.
Az Internet Explorer 10, már megoldotta ezt a problémát, munkájának koordinálása hulladékgyûjtés a többi böngésző alkatrészeket. Most Chakra szemétgyűjtő elhalasztja végéig a szkript, és a szkript után az inaktív szakaszt a böngésző visszahívást kér. Ha ez az időszak véget ér, mielőtt bármilyen script, Chakra kezdődik szemétgyűjtő, különben a szerelvény ismét elhalasztották. Ez a technika csökkenti a használt memória mennyiségét, ha a böngésző inaktív (fogyatékos vagy annak egy fül), valamint jelentősen csökkenti a gyakoriságát hulladékgyûjtés alkalmazásokban nagy számú animáció.