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

1章を読めば以下の問いに答えられるようになる
  • コンピュータアーキテクチャの構成要素とは何か?
  • 一般に、構成要素にはどのようなものがあるか?
  • Pythonは下層のコンピュータアーキテクチャをどのように抽象化しているのか?
  • Pythonのコードを最適化するうえでの障壁は何か?
  • パフォーマンスの高いプログラマーになるためには、どのような戦略が必要か?

 プログラミングは、データのビットを移動し、特別な方法で変換して、ある結果を得ることと考えられます。ただし、これらの演算には時間的なコストがかかります。したがって、ハイパフォーマンスプログラミングとは、これらの演算量を最小化することとみなせます。そのために、より効率的なコードを書いてオーバーヘッドを減らしたり、より適切なアルゴリズムを選択して演算を効率化します。

 まずは、コードのオーバーヘッドを軽減することに焦点を当てることで、ビットを動かしている実際のハードウェアについての理解を深めてみましょう。Pythonはハードウェアを直接操作するのではなく抽象化することに重きを置く言語なので、ビット移動のレベルで考えるのは無駄に思えます。しかし、ハードウェア上でビットを移動する最善な方法と、Pythonがビットの移動を抽象化する方法を理解すれば、Pythonで高性能なプログラムを書く第一歩となります。

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

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

Get ハイパフォーマンスPython 第2版 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.