1章高性能なPythonを理解する

本章を読めば以下の問いに答えられるようになる
  • コンピュータアーキテクチャの構成要素とは何か?
  • 一般に、構成要素にはどんなものがあるか?
  • Pythonは下層のコンピュータアーキテクチャをどのように抽象化しているのか?
  • Pythonのコードを最適化するうえでの障壁は何か?
  • 性能問題にはどんなものがあるか?

コンピュータのプログラムの働きは、ある特定の結果を導き出すために、データのビットを移動して特別な方法で変換すること、とみなすことができます。これには時間というコストがかかります。高性能化プログラミングとは、(より効率のよいコードを書くなどして)オーバーヘッドを減らしたり、(より適切なアルゴリズムを適用して)ひとつひとつの処理がより有意義になるように処理のやり方を変えたりすることによって、処理を最小化することとみなすことができます。

ビットを移動している実ハードウェアについての洞察力を高めるために、コードのオーバーヘッドを軽減することに焦点を当ててみましょう。Pythonはハードウェアを直接操作するのではなく抽象化することに重きを置く言語なので、ビット移動のレベルで考えるのは困難に思えるかもしれません。しかし、実ハードウェア上でビットを移動する最良の方法と、Pythonがビットの移動を抽象化する方法の両方を理解すれば、Pythonで高性能なプログラムを組むのに一歩前進することができます。

1.1 コンピュータシステムの基礎

簡単に言えば、コンピュータは「演算装置」「記憶装置」「両者の接続装置」の3つの基本パーツから構成されています。さらに、これらのパーツにはそれぞれ使用上理解しておくべき特性があります。すなわち、演算装置には1秒間に何回の計算ができるのかという特性があり、記憶装置にはどれだけの量のデータを保持し、どれだけ速く読み書きできるのかという特性があり、接続装置にはどれだけ速くデータをある場所から別の場所に移動できるのかという特性があります。 ...

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.