重要更新
我刚刚发现,在重新启动Matlab和计算机后,这个简化的代码不再为我重现问题......我很抱歉花时间使用不起作用的脚本.但是,如果我在内部'for'循环中的任何文件夹(我已经尝试过)中保存了任何内容,那么旧问题仍然存在于我的原始脚本中.就我的目的而言,除非我绝对需要,否则我只是不做这个保存.原来的剧本在的方面如下结构for的循环和使用save或load:
load() % .mat files, size 365x92x240
for day = 1:365
load() % .mat files, size 8x92x240
for type = 1:17
load() % .mat files size 17x92x240
load() % .mat files size 92x240
for step 1:8
%only calculations
end
save() % .mat files size 8x92x240
end
save() % .mat files, size 8x92x240
end
% the load and saves outside the are in for loops too, but do not seem to affect the described …Run Code Online (Sandbox Code Playgroud) 我有四个变量,每个变量保存在365个mat文件中(大小:8 x 92 x 240).我尝试在for-loop day = 1:365中将这些加载到我的函数中,每天一个变量文件.但是,这两个第一个变量总是需要很长时间才能加载.我的加载代码如下所示:
load([eraFolder sprintf('Y%dD%d-tempSD.mat',year,day)], 'tempSD'); % took 5420 s to load
load([eraFolder sprintf('Y%dD%d-tempDewSD.mat',year,day)], 'tempDewSD')
load([eraFolder sprintf('Y%dD%d-eEraSD.mat',year,day)], 'eEraSD'); % took 6 seconds to load
load([eraFolder sprintf('Y%dD%d-pEraSD.mat',year,day)], 'pEraSD');
Run Code Online (Sandbox Code Playgroud)
使用Profiler,我可以看到前两个变量在365次调用中加载5420秒,而最后两个变量分别在365次调用中加载6和4秒.当我交换加载变量的顺序时,例如eEraSD之前tempSD,它仍然是前两个加载需要更多时间.
当tic toc用于跟踪加载所花费的时间时,加载第一个或第二个变量的时间似乎随着调用次数呈指数增长(最后一次调用需要50秒才能运行).对于第三个和第四个变量,加载时间保持在每个文件大约0.02-0.04秒,或多或少独立于我已经去过的for循环的距离.见下图.
当使用importdata而不是'load'时,第一行需要大约8000秒才能加载365次(加载量呈指数增长,如第二幅中的T所示).然后其他线路需要大约10秒钟才能加载365次.
我不明白为什么它看起来这样,我可以做些什么来减少加载时间.非常感谢任何可能的解决方案的想法.