Долгое время загрузки данных в Matlab
У меня есть четыре переменные, каждая из которых сохранена в 365 mat-файлах (размер: 8 x 92 x 240). Я пытаюсь загрузить их в свою функцию в течение цикла for =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');
Используя Profiler, я мог видеть, что первые две переменные заняли 5420 секунд для загрузки в 365 вызовах, тогда как последние две переменные заняли 6 и 4 секунды для загрузки соответственно более 365 вызовов. Когда я поменяю местами порядок загрузки переменных, например eEraSD
до tempSD
Это все еще первые две загрузки, которые занимают больше времени.
Когда используешь tic
toc
для отслеживания времени, затраченного на загрузку, оказывается, что время загрузки первой или второй переменной экспоненциально увеличивается с увеличением количества вызовов (при последнем вызове, который занимает 50 секунд). Для третьей и четвертой переменных время загрузки остается около 0,02-0,04 секунды на файл, более или менее независимо от того, как далеко я зашел в цикле for. Смотрите цифры ниже.
Когда используешь importdata
вместо "загрузки" первой строке требуется около 8000 секунд для загрузки 365 раз (при этом загрузка экспоненциально увеличивается, как показано для Т на втором рисунке). Другие строки загружаются примерно за 10 секунд 365 раз.
Я не могу понять, почему это выглядит так и что я могу сделать, чтобы уменьшить время загрузки. Буду очень признателен за любую идею возможного решения этой проблемы.
2 ответа
Спасибо за вашу помощь. Я наконец узнал, что вызвало проблему. Позже в цикле for я сохранил другие данные в папке, которую я назвал temp. После переименования этой папки во что-то другое (например, временное) проблема с загрузкой данных исчезла.
(Не имеет большого значения сейчас, когда практическая проблема решена, но я не могу сказать, что понимаю, почему существовала такая специфическая связь между последующим вызовом save и вызовом importdata или load).
Я предполагаю, что ваши наборы данных находятся в одном каталоге (по сети или локально) и с такими же атрибутами, например, свойствами доступа и т. Д.
Тогда единственная оставшаяся опция - это характеристики vairbales, хранящиеся в этих matfiles. Можете ли вы проверить размер этих переменных, например, загрузив образец. Это сузит, чтобы решить вашу проблему.
Надеюсь, что поможет.
FS