0

私は C++ プロジェクトに取り組んでおり、バイト値にすばやくアクセスする必要があります。私は、メモリマップされたファイル、データのスマートな順序付けなどで多くの実験を行ってきました。ディスク アクセスとファイルのシークがボトルネックと思われる状況が常に存在します。

私は今、バイトデータ全体 (符号なし文字) を RAM にロードすることを考えていました。ただし、39567865 符号なし文字です。私のコンピューターでは動作しますが、すべてのコンピューターで動作するようにしたいと考えています。

私のアプローチがおかしいかどうか、誰か教えてもらえますか? 言い換えれば、一般的なソフトウェア(スーパーコンピューターで実行される科学的アプローチではない)が、そのような量のデータをRAMにロードしてすばやくアクセスできるようにすることは有効ですか?

4

2 に答える 2

2

文字は 1 バイト幅なので、

39567865 / 1024 = 38,640 kb

これは約 37.7 Mb です。RAM がほとんどない組み込みマシンで作業する予定がない限り、問題ありません。参考までに: あなたが作業しているマシンには 4 ~ 8 Gb の RAM が搭載されている可能性が高く、メモリ消費量はその約 0.4% ~ 0.8% です。

于 2013-06-30T13:12:31.920 に答える
1

今日の通常の Win32 (または win64) マシンでは、100M ファイルをメモリにロードすることは完全に公平であり、代替手段よりも好まれます。

一般的な答えは、設定したシステム要件と、プログラムの通常の使用パターンによって異なります。数秒以内に数十のコピーが起動される場合は、他の方法が考えられます。

于 2013-06-30T13:17:19.717 に答える