我想循环加载大量 MAT 文件。我正在测试使文件加载更快的不同方法,并且我正在使用 10,000 个文件的子集,每个文件包含大约 50 个不同大小的变量。我注意到一个有趣的细节:
- 如果我一个接一个地循环加载10,000个文件
load(filename)
,大约需要5分钟。 - 如果我多次加载同一组文件(基本上重复测试),时间不会改变。
- 如果我使用 仅从每个文件中加载一个变量
load(filename, 'varname')
,则需要大约相同的时间。 - 如果我重复第 3 步,完成加载大约需要15 秒。相同的文件,相同的变量被加载。
- 如果我现在运行第 1 步并再次重复第 3 步,我将返回大约 5 分钟的负载。但是一旦我尝试进行第二次加载,再次需要很短的时间。
我很困惑。一旦从文件中加载数据一次,Matlab 是否会以某种方式将数据保存在内存中?然而,这种现象在 Matlab 重启和clear
命令中仍然存在,那么实际上是 Windows 7 保留了一些数据的内存缓存吗?
不用说,我想确定是什么导致了意想不到的改进,如果可能的话,重现它以使第一次加载与后续加载一样快。