-1

char長さが80億の配列がある場合。それをより小さな配列に分割すると、キャッシュが改善されてパフォーマンスが向上しますか?基本的に、配列を繰り返し、いくつかの比較を行います。そうでない場合、そのような長さのアレイを使用するための最適な方法は何ですか。

バイナリ形式のファイルを配列に読み込んでおり、ファイルのさまざまな部分でバイナリ比較を実行します。

4

2 に答える 2

1

これを一度行う場合は、それを実行してください。プログラミングの努力は、得た時間の価値がないかもしれません。

私はあなたがこれを何度も繰り返したいと思っているので、それを最適化したいのです。反復と比較を順番に行う必要があるかどうかを知ることは確かに役立ちますか?ドメイン入力に問題がなければ、ここで一般的な最適化を行うのは難しいです。

並行して実行でき、複数回実行する必要がある場合は、これを解決するためのMapReduceテクニックを確認することをお勧めします。

于 2012-08-05T09:28:14.573 に答える
1

8 GB相当のデータは必然的にデータの局所性を損なうため、いずれかの方法でメモリを細かく管理するか、OSが仮想メモリのディスクスワッピングを実行します。

ただし、別の方法、いわゆる。がありmmapます。基本的に、これによりファイルを仮想メモリスペースにマップでき、OSはそのファイルにアクセスして必要なページをRAMにロードするタスクを実行しますが、このファイルへのアクセスは単なるメモリアドレス指定にすぎません。

詳細についてmmapは、http://en.wikipedia.org/wiki/Mmapをご覧ください。

于 2012-08-05T09:38:53.747 に答える