しかし、Pythonスクリプトが同等のC ++プログラムと同じくらい高速になるのを妨げる技術的な制限や言語機能はありますか?
いいえ。C++を高速に実行するために注がれるお金とリソースと、Pythonを高速に実行するために注がれるお金とリソースの問題です。
たとえば、Self VMが登場したとき、それは最速の動的OO言語であっただけでなく、最速のOO言語期間でもありました。信じられないほど動的な言語であるにもかかわらず(たとえば、Python、Ruby、PHP、JavaScriptよりはるかに)、利用可能なほとんどのC ++実装よりも高速でした。
しかし、SunはSelfプロジェクト(大規模システムを開発するための成熟した汎用OO言語)をキャンセルし、テレビセットトップボックスのアニメーションメニュー用の小さなスクリプト言語に焦点を当てました(聞いたことがあるかもしれませんが、Javaと呼ばれています)。より多くの資金。同時に、Intel、IBM、Microsoft、Sun、Metrowerks、HPなど。莫大な金額とリソースを費やしてC ++を高速化しました。CPUメーカーは、C ++を高速化するためにチップに機能を追加しました。オペレーティングシステムは、C ++を高速にするために作成または変更されました。したがって、C ++は高速です。
私はPythonにそれほど精通していないので、私はRubyの人間なので、Rubyの例を挙げHash
ますdict
。RubiniusRuby実装のクラス(Python での機能と重要性は同等)は、100%純粋なRubyで記述されています。しかし、それは有利に競争し、時にはHash
手作業で最適化されたCで書かれたYARV のクラスよりも優れています。そして、商用のLispまたはSmalltalkシステム(または前述のSelf VM)と比較すると、Rubiniusのコンパイラーはそれほど賢くありません。
Pythonには、処理速度を低下させる固有の要素はありません。今日のプロセッサとオペレーティングシステムには、Pythonに悪影響を与える機能があります(たとえば、仮想メモリはガベージコレクションのパフォーマンスが悪いことが知られています)。C ++は役立つがPythonは役に立たない機能があります(最新のCPUは非常に高価であるため、キャッシュミスを回避しようとします。残念ながら、OOとポリモーフィズムがある場合、キャッシュミスを回避することは困難です。むしろ、キャッシュのコストを削減する必要があります。 Java用に設計されたAzul Vega CPUがこれを行います。)
C ++の場合と同様に、Pythonを高速化するために多くのお金、研究、およびリソースを費やし、C ++の場合と同様に、Pythonプログラムを高速に実行するオペレーティングシステムを作るために多くのお金、研究、およびリソースを費やす場合PythonプログラムをC ++の場合と同じように高速に実行するCPUを作成するための多くのお金、研究、リソースがあれば、PythonがC ++に匹敵するパフォーマンスに到達できることは間違いありません。
ECMAScriptでは、1人のプレーヤーだけがパフォーマンスに真剣に取り組むとどうなるかを見てきました。1年以内に、基本的にすべての主要ベンダーのパフォーマンスが全体で10倍に向上しました。