web-dev-qa-db-ja.com

JavaScriptジャストインタイムコンパイル

デバイスのHTMLページ用の非常に大きなJavaScriptがあります。

しかし、それは少し遅いです。 JavaScriptファイルを圧縮してみましたが、それでも満足のいくものではありません。

だから私は考えていました、それをマシンコードに変換してコンパイルされて使用するジャストインタイムとしてそれを作ることは可能ですか? (私の理解が正しいことを願っています)私はWebKitベースのブラウザーを使用しています。

これを行った人は誰でも、「ハウツー」ページへのリンクまたは同じ情報を提供してください。

23
hari

SafariとChromeはすでにJavascriptのJITコンパイルを行っています。実際、広く使用されているブラウザはIE8以前だけです。これがIE8が非常に多い主な理由の1つです。最近の競争よりも遅い。

しかし、あなたの質問の行間を読んで、あなたはJITコンパイルが何であるかを完全に理解していないと思います。 JITコンパイルはブラウザで行われます。ブラウザがJITコンパイルを実行できるようにするために、コードを変更する必要はまったくありません。

あなたが実際に考えているように聞こえるのは、Javaのようなバイトコードコンパイルです。このバイトコードは事実上中途半端にコンパイルされた言語であり、プログラムの実行時にそれ自体がJITコンパイルされます。これがあなたが考えていることであるならば、これがブラウザベースのJavascriptコードのオプションではないことを確認できます。

グーグルは、コンパイルされたコードをブラウザに提供できるようにする「ネイティブクライアント」(NaCl)と呼ばれる技術をいじっていますが、これはChromeの開発バージョンを除いてまだ利用できません。

いずれにせよ、コンパイルするとコードの実行が速くなる可能性がありますが、実行速度が遅い理由の根本的な問題は解決されません。これは、解決するのにはるかに優れている可能性があります。 (コンパイルされたコードでさえ、ボトルネックがあるとパフォーマンスが低下します。コンパイル自体は、魔法のようにスローコードを改善しません)

スクリプトの実行速度が遅い理由を知りたい場合は、FirebugやChromeの開発者ツールに組み込まれているようなプロファイリングツールを使用することをお勧めします。これは、実行速度が遅いコードの部分を特定するのに役立ちます。

YSlow ツールを試すこともできます。このツールは、JavaScriptのパフォーマンスに関する有用な情報を提供することもできます。

また、スクリプトを高速化するためにスクリプトを圧縮したと述べています。スクリプトを圧縮すると、ダウンロードが速くなります(ファイルが小さいため)が、コードの実行速度については何もしません。 。

それがお役に立てば幸いです。

62
Spudley