4

C++ を使用して、30000 行以上、3000 列以上の大きなファイルを読み込んでいます。(30000 x 3000) マトリックス。2次元ベクトルを使用して読み取りデータをプッシュします。しかし、私はこのプロセスを数回行う必要があります。読み取りプロセスを最適化する方法はありますか?

4

2 に答える 2

2

いくつかのアイデアを提供しますが、正確な解決策ではありません。私はあなたのシステムの詳細を完全には知らないからです。

  1. 実際には、データを含むこれほど大きなファイルがあり、次の読み取りで一部のデータのみが変更される場合。いくつかのデータベース方法論を使用してみてください。
  2. パフォーマンスのために、同時ファイル読み取りを使用できます(複数のスレッドを使用して、同じファイルを部分ごとに読み取ります)。
  3. データも処理する必要がある場合は、個別のスレッドを使用して処理し、キューまたは並列キューでリンクできる場合があります。
  4. データ長が固定されている場合 (固定長の数値など)。変更された場所がわかっている場合は、ファイル全体を何度も読み取って処理するのではなく、変更されたデータのみを読み取るようにしてください。
  5. 上記のいずれかが役に立たない場合は、メモリ マッピング方法を使用してください。移植性を求める場合は、Boost Memory-Mapped Filesが作業の削減をサポートします。
于 2013-05-22T05:14:31.830 に答える