IronRuby が Ruby の実装であり、F# が多かれ少なかれ OCaml であるように、IronPython は .NET プラットフォーム上の Python の実装であることを理解しています。
私が理解できないように見えるのは、これらの言語が速度の点で「祖先」に近いのか、それとも C# のようなものに近いのかということです。たとえば、IronPython は、C# で使用されるのと同じバイトコードに何らかの方法で「コンパイル」されているので、同じように高速に実行されますか?
IronRuby が Ruby の実装であり、F# が多かれ少なかれ OCaml であるように、IronPython は .NET プラットフォーム上の Python の実装であることを理解しています。
私が理解できないように見えるのは、これらの言語が速度の点で「祖先」に近いのか、それとも C# のようなものに近いのかということです。たとえば、IronPython は、C# で使用されるのと同じバイトコードに何らかの方法で「コンパイル」されているので、同じように高速に実行されますか?
IronPython と IronRuby は、DLR (動的言語ランタイム) の上に構築され、その場で CIL (.NET で使用されるバイトコード) にコンパイルされます。C# よりは遅いですが、.NET 以外のものよりは faaaaaaar 高速です。私の知る限り、まともなベンチマークはありませんが、違いがわかります。
IronPythonは、実際には最速のPython実装です。「最速」の定義については、少なくとも、たとえば、CLRの起動オーバーヘッドはCPythonと比較して巨大です。また、最適化コンパイラIronPythonは、コードが複数回実行される場合にのみ意味があります。
IronRubyは、IronPythonを高速化する興味深い機能の多くが、IronPythonとIronRuby(およびマネージドJavaScript、Dynamic VB、IronScheme、VistaSmalltalkなど)の両方で動的言語ランタイムに抽出されているため、IronPythonと同じくらい高速になる可能性があります。構築されています。
一般に、言語実装の速度は、実際の言語機能とはほとんど無関係であり、それに入るエンジニアリングの人年数に大きく依存します。IOW:動的か静的かは関係ありません。お金は関係あります。
たとえば、Common LispはRubyやPythonよりもさらに動的な言語ですが、Cにお金をかけて実行することさえできるCommonLispコンパイラがあります。優れたSmalltalk実装は、Java(SunHotSpotとIBMJ9の両方の主要なJVMが実際にはわずかに変更されたSmalltalkVMであるため)またはC++と同じくらい高速に実行されます。過去6か月で、主要なJavaScript実装(Mozilla TraceMonkey、Apple SquirrelFish Extreme、およびブロックの新しい子供であるGoogle V8)により、 JavaScriptのパフォーマンスが10倍以上向上し、JavaScriptを最適化されたC。
最新の.NET実装のパフォーマンスは、祖先とC#のパフォーマンスの間にあると想定することで、正しい考えが得られます。その理由は、C#が.NET自体と非常に密接に一致しているためです。
C#とOCaml自体のパフォーマンス特性は類似しているため、F#は簡単です。
PythonとC#のパフォーマンス特性は大きく異なるため、IronPythonははるかに困難です。実際、答えはIronPythonの実装自体に依存します。これは、非効率的なPythonスタイルの評価を可能な限り効率的なC#スタイルの評価に変換しようとします。IronPythonは、通常、C#よりもはるかに低速であり、同じ領域にときどきスパイクが発生することが予想されます。この効果はここで確認できます。
乾杯、ジョン・ハロップ。
現在、IronRuby はほとんどの点でかなり遅いです。全体的に MRI (Matz の Ruby 実装) よりも確実に遅いですが、いくつかの場所では高速です。
IronRuby は、はるかに高速になる可能性を秘めていますが、速度の点で C# に近づくことはないと思います。ほとんどの場合、それは問題ではありません。たとえば、データベース呼び出しは、おそらく Web リクエストの全体の 90% を占めます。
チームは、パフォーマンスよりも言語の完全性を優先するのではないかと思います。これにより、IronRuby を実行し、1.0 が出荷されたときにほとんどの Ruby プログラムを実行できるようになり、パフォーマンスが向上する可能性があります。
IronPython にも同様の話があるのではないかと思います。