У меня есть четыре переменные, каждая из которых сохранена в 365 мат-файлах (размер: 8 x 92 x 240). Я пытаюсь загрузить их в свою функцию в цикле for 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');
Используя Profiler, я мог видеть, что для загрузки первых двух переменных потребовалось 5420 секунд при 365 вызовах, тогда как для загрузки последних двух переменных потребовалось 6 и 4 секунды соответственно при 365 вызовах. Когда я меняю порядок загрузки переменных, например. eEraSD
до tempSD
, все же первые две загрузки занимают больше времени.
При использовании tic
toc
для отслеживания времени, затрачиваемого на загрузку, оказывается, что время загрузки первой или второй переменной экспоненциально увеличивается с количеством вызовов (последние вызовы выполняются за 50 секунд). Для третьей и четвертой переменных время загрузки остается примерно 0,02-0,04 секунды на файл, более или менее независимо от того, как далеко я продвинулся в цикле for. См. рисунки ниже.
При использовании importdata
вместо load первой строке требуется около 8000 секунд для загрузки 365 раз (при этом загрузка экспоненциально увеличивается, как показано для T на втором рисунке). Затем другим строкам требуется около 10 секунд для загрузки 365 раз.
Я не могу понять, почему это выглядит так и что я могу сделать, чтобы уменьшить время загрузки. Был бы очень признателен за любую идею возможного решения для этого.
mat
файлах дополнительные переменные, которые вы не загружаете? - person Shai   schedule 16.12.2012importdata
вместо этого и посмотреть, изменит ли это что-нибудь. У меня нет дополнительных переменных в файле, который я не загружаю. - person LaWa   schedule 20.12.2012