大量の MAT ファイルをループで読み込みたい。ファイルの読み込みを高速化するさまざまな方法をテストしており、作業中の 10,000 個のファイルのサブセットがあり、それぞれに異なるサイズの約 50 個の変数が含まれています。興味深い詳細に気付きました:
- 10,000 個のファイルを
load(filename)
in loop で次々と読み込むと、約 5 分かかります。 - 同じファイルのセットをさらに数回ロードしても (基本的にテストを繰り返します)、時間は変わりません。
- を使用して各ファイルから変数を 1 つだけロード
load(filename, 'varname')
すると、ほぼ同じ時間がかかります。 - 手順 3 を繰り返すと、読み込みが完了するまでに約15 秒かかります。同じファイル、同じ変数がロードされています。
- ここでステップ 1 を実行し、ステップ 3 をもう一度繰り返すと、約 5 分かかるロードに戻ります。しかし、2 回目のロードを試みると、再び非常に短い時間がかかります。
私は困惑しています。ファイルから一度ロードすると、Matlabはどういうわけかデータをメモリに保持していますか? ただし、この現象は Matlab の再起動やclear
コマンドの後も存続するので、データの一部のメモリ キャッシュを保持しているのは実際には Windows 7 でしょうか?
言うまでもなく、予期しない改善の原因を特定し、可能であればそれを再現して、最初の読み込みをその後の読み込みと同じくらい速くしたいと思います。