Tímto dílem seriálu o interpretech JavaScriptu zahajujeme část věnovanou interpretu SpiderMonkey. Dnes si ho představíme a popíšeme si, jak v něm probíhá zpracování javascriptového kódu. Pozastavíme se také nad jeho reprezentací hodnot a optimalizacemi, které umožňují efektivní práci s řetězci a poli.
Archiv autora: David Majda
David Majda
Autor je vývojář se zájmem o programovací jazyky, webové aplikace a problémy programování jako takového. Vystudoval informatiku na MFF UK a během studií zde i trochu učil. Aktuálně pracuje v SUSE.
V dnešní části seriálu dokončíme povídání o interpretu SquirrelFish. Podíváme se na to, jakým způsobem urychluje práci s regulárními výrazy a jak optimalizuje přístup k vlastnostem objektů. Článek zakončíme popisem některých optimalizací, které jeho vývojáři chtějí implementovat v blízké budoucnosti.
Dnes se budeme věnovat tomu, jak urychlit vykonávání instrukcí bajtkódu JavaScriptu ve virtuálním stroji SquirrelFish. Představíme si přitom techniku direct threading, která zrychluje dispatching instrukcí, a další optimalizace. Na závěr článku se podíváme, jak je na tom SquirrelFish s generováním nativního kódu.
Tímto dílem začínáme část seriálu o implementacích JavaScriptu, která se bude věnovat vnitřnostem konkrétních implementací. Začneme s popisem vybraných částí interpretu SquirrelFish – podíváme se, jak se v něm reprezentují hodnoty javascriptových proměnných a jak je navržen jeho virtuální stroj a bajtkód.
V tomto dílu dokončíme přehled implementací JavaScriptu a podíváme se, kde všude kromě webových prohlížečů se dá tento jazyk najít. JavaScript můžeme totiž používat také v Javě, Flashi, .NETu, ale třeba i na webovém serveru Apache, v Emacsu a v několika jiných nečekaných prostředích.
Dnešním dílem opouštíme teorii a začínáme se věnovat konkrétním implementacím JavaScriptu. Dnes stručně projdeme ty, které jsou k nalezení uvnitř webových prohlížečů Internet Explorer, Firefox, Safari, Opera, Google Chrome a několika dalších. Ukážeme si, co je pro ně charakteristické.
V dnešním dílu seriálu zakončíme obecné povídání o rychlosti interpretace JavaScriptu. Podíváme se na funkci eval, dále na to, jak výkonnostně nepříjemná může být možnost zjistit informace o parametrech funkcí na zásobníku a také na příkaz with. Na závěr si stručně povíme, jak jsou interprety obvykle implementované.
Ve druhém dílu seriálu o implementacích JavaScriptu se podíváme na to, proč není snadné JavaScript rychle interpretovat, a které vlastnosti tohoto jazyka mají největší negativní vliv na jeho výkon. Zaměříme se přitom na problémy způsobené jeho dynamičností.
Tento článek otevírá nový seriál, který bude věnován implementacím JavaScriptu. Postupně si v něm představíme nejdůležitější současné interprety tohoto jazyka (především ty obsažené ve webových prohlížečích) a u některých vybraných se podrobněji podíváme, jak vypadají uvnitř. Nejvíc nás přitom bude zajímat, jaké techniky se v nich používají pro optimalizaci a urychlení spouštěného kódu.