トップページに戻る

pythonの高速化

注: pythonの長所はあくまでも、プログラムを簡単に作成、実行できる点です。
  さまざまな工夫を使って高速化する必要がある場合は、コンパイル言語を使って実装しなおすほうが良いこともあります

 pythonは基本的にインタプリタ型言語であり、実行時にテキストのソースプログラムを機械語に翻訳しながら実行します。
また、オブジェクト指向言語であり、全ての関数、変数はオブジェクトとして扱われます。多くのスクリプト言語 (あるいは Light Weight Language: LWL) と同様、
pythonのオブジェクトは辞書型変数 (__dict__) が実体です。そのため、オブジェクトのattributeへのアクセスは非常にオーバーヘッドが大きくなります。

 それに対し、C/C++で実装されている組み込み構文・関数やモジュールの実行速度は格段に速くなります。以下の注意を払うことで
pythonプログラムの高速化ができるかもしれません。

 ただし、上記のような工夫 (C/C++などで書き直すことを除く) をしたとしても、実行速度はコンパイル言語にはまったくかないません。


 スクリプト言語と比較しても、例えば、オブジェクトを使わないperlと比べても数分の1の速度になります
(perlでオブジェクト変数アクセスを主にするとpythonと同程度まで遅くなります)。

注: pythonのコードをバイトコンパイルすこともできます。ただし、オブジェクトにattributeを動的に追加したり、eval() を使うコードには事前コンパイルは機能しません。
 参考: Pythonのコードをバイトコンパイルする方法

注: pythonではバージョンアップによって実行速度が改善されていることがあります。

注: python3.13から Just in time コンパイラの実装が始まりました。まだ十分な性能は出ていないようですが、将来的には高速化される可能性があります。