7章Cにコンパイルする
本章を読めば以下の問いに答えられるようになる
- どうすればPythonのコードを低水準コードとして実行できるか?
- JITコンパイラとAOTコンパイラの違いは何か?
- コンパイルによってPythonよりも高速化できる処理にはどんなものがあるか?
- データ型の注釈をつけると、なぜコンパイルされたPythonコードが高速化できるのか?
- CやFortranを使って、どのようにモジュールを書くのか?
- CやFortranのライブラリを、どのようにPythonで使うのか?
コードを高速化するもっとも簡単な方法は、処理を減らすことです。すでに最良のアルゴリズムを選択し、処理するデータ量を減らしているのなら、実行する命令数を減らすもっとも簡単な方法は、コードを機械語にまでコンパイルすることです。
Pythonにはさまざまなコンパイラの選択肢があります。CythonやShed Skin、PythranのようなCに基づくコンパイラ、NumbaのようなLLVMに基づくコンパイラ、組み込みの実行時(Just-In-Time:JIT)コンパイラを内蔵する仮想マシンであるPyPyなどがあります。どれを採用するかは、コード変更の必要性と開発チームの方向性のバランスをとって決める必要があります。
どのツールを用いても、開発環境になんらかの依存性を持ち込みます。さらにCythonでは新しい種類の言語(PythonとCのハイブリッド)で書く必要があるので、その習得に手間がかかります。Cythonの新しい言語を導入すると、Cを知らないメンバーがついていけず、開発チームの勢いを削ぐことになるかもしれません。ただし、実際には、Cythonを使う人は限定的ですし、よく吟味したコードの一部に用いるだけなので、それほど問題にはならないでしょう。 ...
Get ハイパフォーマンスPython now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.