Revision 332: Die V8 JavaScript Engine

Published: March 26, 2018, 7:55 p.m.

Diese Revision hatten wir Benedikt Meurer (Web, Twitter, Github), seines\nZeichens Tech Lead bei V8, zu Gast.\n\n\nSCHAUNOTIZEN\n\n[00:00:55] DIE V8 JAVASCRIPT ENGINE\n\nBenedikt erz\xe4hlt uns, was sich in V8 seit Revision 8 und der Einf\xfchrung von\nCrankshaft getan hat. Eigentlich ist kein Stein auf dem anderen geblieben. Nach\neinem kleinen \xdcberblick \xfcber optimierende Compiler allgemein und JS-JITs in\nChrome kl\xe4rt uns Benedikt \xfcber die zahlreichen Limitierungen von Crankshaft auf.\nDiese spielen im aktuellen Chrome mit Ignition als Bytecode-Generator und\nTurboFan als Crankshaft-Ersatz keine Rolle mehr. Jenseits Chrome-spezifischer\nDetails sprechen wir \xfcber Array-Subclassing (sollte man sein lassen), die Zahl\n11 (in Spinal Tap und im Aufzug) und Micro-Benchmarks vs. Real-World-Workloads.\nAls wichtigste Performance-Best-Practices kristallisieren sich\nCaptain-Obvious-Erkenntnisse wie \u201eIdeomatic JS schreiben\u201c und \u201eObjekte monomorph\nhalten\u201c heraus. Gegen Ende sprechen wie \xfcber die Performance-Charakteristika von\nneue ES-Datenstrukturen, Modulen, Workersn, const und modernen ES-Standards\nallgemein und kommen auch auf die Top 3 Performance-Irrt\xfcmer zu sprechen.