11章RAM使用量を削減する

本章を読めば以下の問いに答えられるようになる
  • なぜRAMの使用量を減らすべきなのか?
  • 大量の数を記憶するのに、numpyarrayが優れているのはなぜか?
  • どのようにしたら大量のテキストを効率よくRAM上に記憶できるのか?
  • どのようにしたらたった1バイトで1e77(1077)まで(近似的に)数えられるか?
  • Bloomフィルタとは何で、必要になる理由は何か?

RAMは使い切って初めてどれだけ使っているのかを考えるものです。コードを拡張中にRAMを使い切ってしまうと、突然それは進捗を阻害する要因になりえます。1台のマシンのRAMの中により多くのデータが収まれば、管理しなければならないマシンの数が減りますし、より大きなプロジェクトに発展させていくための余地もできます。RAMを使い切ってしまう理由を知り、この貴重なリソースをより効率よく使う方法を考えれば、より大きな問題を扱えるようになるでしょう。

RAMを節約するには、データを圧縮して記憶するコンテナを使う方法もあります。本章では、トライという順序つきのツリー構造とDAWGというデータ構造を説明します。これを用いると性能をほとんど犠牲にすることなく、1.1GBの文字列をわずか254MBに圧縮できます。最後に、正確さを犠牲にして劇的にRAMを節約する近似計算や近似メンバーシップを説明します。

RAMの使用量を考えることとは「データには質量がある」とイメージすることです。質量が増えれば、移動に時間がかかります。RAMを節約すれば、データは高速にバスを移動でき、容量に上限のあるキャッシュに収まります。データがRAMに収まらず遅い記憶装置(ハードディスクや、リモートにあるデータクラスタなど)に記憶しなければならなくなると、マシンにデータを持ってくるのがはるかに遅くなります。適切なデータ構造を選んで1つのマシンにデータが収まるようにしましょう。 ...

Get ハイパフォーマンスPython now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.