2

約 2 GB の RAM を占有する大きな値のマトリックスがあります。

このマトリックスのコピーを作成する必要があります。その後、元のマトリックスをディスクにスワップ アウトして、後でロードすることができます。このマトリックスの内容は重要です。最初に計算するとコストがかかるため、簡単に破棄して再作成することはできません。行列をディスクにドロップしてからディスクから再ロードする方が、ゼロから再計算するよりも高速です。

私が持っているものよりも、次のアクセスまで一時的にディスクに配置するメモリのセクションを指定する簡単またはより良い方法はありますか?

リソース(2GBマトリックス)が不要な場合

  • ファイルを開く
  • ファイルをディスクに書き込む
  • メモリを解放する

リソースが必要なとき

  • ファイルを開く
  • マトリックスで読む
  • ディスクからファイルを削除する

私はファイルマッピングに出くわしましたが、これが正しい使い方かどうかはわかりません

4

2 に答える 2

3

Memory Mapped Filesをご覧ください。

メモリ マップト ファイル (MMF) は、アプリケーションが動的メモリにアクセスするのと同じ方法で (ポインターを介して) ディスク上のファイルにアクセスできるようにする独自のメモリ管理機能を提供します。

オペレーティング システムは、元のマトリックスの一部をディスクとの間で非常に効率的にスワップします。

于 2012-06-28T21:44:41.153 に答える
2

行列がプログラムの再起動後も存続する必要がないと仮定すると、アプリケーションを 64 ビットとしてコンパイルし、行列をメモリにそのまま残します。OS は、メモリ不足の状態になると、使用頻度の最も低いメモリ ページを自動的にスワップアウトします。

ただし、やや最新のハードウェアでも、2 + 2 GB 1をはるかに超えるRAM があり、いずれにせよすべてが RAM に残る可能性が非常に高くなります。

1元のマトリックス + コピー。

于 2012-06-28T21:46:19.030 に答える