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.