
12.3 ビッグデータを扱うアルゴリズム 367
ブロックを比較的高速に読み出せる。そのため、あとで必要になるだろうという想定のもとに、大量
のファイルをメモリにコピーする事前割り込みが意味を持つ。
レイテンシは、大量購入による割引に似ているところがある。アクセスする最初の要素のためにかかるコ
ストは大きいが、その後の要素にかかるコストはかなり安くなる。そこで、次のような技法を使ってこの特
徴を生かすように計算を組み立てなければならない。
• ファイルやデータ構造をストリームとして処理する:事前割り込みの効果を活用するためには、可能
な限りファイルやデータ構造に逐次的にアクセスすることが大切である。論理的に近接した要素はス
トレージデバイスでも近くに格納されるので、リンクでつながったデータ構造よりも配列の方が向い
ている。また、データファイルの個々の要素を一度にまとめて読み込み、次に進む前に必要な計算を
すべて実行した方がよい。データをソートすることのメリットの多くは、適切な位置にジャンプでき
るようになることである。しかし、そのようなランダムアクセスはコストがかかる。検索するのでは
なく、端から順に片付けることを考えよう。
• ディ
レクトリを作るよりも、大きなファイルを作ることを考えよう:文書を集めたコーパスには、
個々の文書が独自のファイルを持つようにまとめることもできる。これは人間から見れば論理的だ
が、機械から見れば小さなファイルが数百万個もあるのは処理が遅くなる要因である。そのようにし
て毎回別