JavaScript エンジンの高速化
ARANK

JavaScript をはじめとする動的言語の処理系における最適化について紹介します。主に 🔗Speculation in JavaScriptCore WebKit を参考にしています。はじめにJavaScript, Ruby, Python をはじめとする動的言語は至るところで利用されています。近年では通常のアプリに見える Web アプリケーションも多く、VSCode, Slack や Notion といったアプリが Web アプリとして実装されています。一方、動的言語は多くの場合、型を静的に決定することができないことから、その高速化にはネイティブコード生成するコンパイラとは異なる難しさがあります。例として以下の JavaScript のコードを考えます。function foo(a, b) { return a + b; } a や b の型がわからないため、a と b の加算で実行されるコードを特定することはできません。この加算は整数の加算かもしれませんし、浮動小数点の加算かもしれませんし、文字列の連結かもしれません。その結果、このプログラムを忠実にコンパイルするコンパイラは、次の図のように、分岐を多く含むコードを生成せざるを得ません。分岐を多く含むコード。🔗Speculation in JavaScriptCore WebKit より引用このように、動的言語のプ…

zenn.dev
Related Topics: JavaScript Web Standards / Browsers