2011-02-06 14 views
48

EDIT:残念ながら、LuaJITは以下のリンクの比較から除外されました。なぜLuaJITはとても良いですか?

このプログラミング言語のcomparisonは、LuaJITが通常のLua実装よりも10倍以上の改善があることを示しています。 変更がそれほど大きいのはなぜですか? JITコンパイルから多くの利益を得ているLuaに固有の何かがありますか? Pythonは動的に型定義され、バイトコードにもコンパイルされるので、なぜPyPy(JITが今はそうだと思いますが)がそのような大きなパフォーマンスの飛躍を見せないのですか?

+33

簡単な答え:Mike Paulは神です:) – Necrolis

答えて

56

マイク・ポールは、いくつかの場所でこのことについて話をしました:

は、最終的に答えがに降りてきます2つのこと:アルゴリズムとエンジニアリング。 LuaJITは高度なコンパイル技術を使用しており、非常に細かく設計された実装もしています。例えば、派手なコンパイル技術がコードを扱うことができない場合、LuaJITはx86アセンブリで書かれた非常に速いインタプリタに落ちます。

LuaJITはエンジニアリング面ではダブルポイントを獲得しています.LuaJIT自体はうまく設計されているだけでなく、Lua言語自体もPythonやJavaScriptよりもシンプルで一貫性のあるデザインです。これにより、実装が一貫して良好なパフォーマンスを提供することが(わずかに)容易になります。

+20

LuaJITは優れたアルゴリズムと優れたエンジニアリングの優れた例です。それをマーケティングテキストのように読むかどうかは無関係です。アセンブリーで手作業でコーディングされたインタープリタループは、Cバージョンのインタープリタよりもはるかに高速です。優れたエンジニアリングの例です。エイリアス解析、ストアシンク、ロードフォワーディング、ナノタグ、レジスタ割り当て、効率的なトレース結合/終了は、優れたアルゴリズム(およびエンジニアリング)の例です。 – Eloff

関連する問題