Экономия времени и памяти с помощью parfor?

Рассматриватьprova.mat в MATLAB получается следующим образом

for w=1:100
    for p=1:9    
        A{p}=randn(100,1); 
    end
    baseA_.A=A;

    eval(['baseA.A' num2str(w) '= baseA_;'])

end

save(sprintf('prova.mat'),'-v7.3', 'baseA')

Чтобы иметь представление о реальных размерах в моих данных,1x9 cell вA1 состоит из следующих9 массивы:904x5, 913x5, 1722x5, 4136x5, 9180x5, 3174x5, 5970x5, 4455x5, 340068x5, ДругойAjСхожий состав.

Рассмотрим следующий код

clear all
load prova
tic
parfor w=1:100
       indA=sprintf('A%d', w);
       Aarr=baseA.(indA).A;
       Boot=[];
       for p=1:9
           C=randn(100,1).*Aarr{p};
           Boot=[Boot; C];  
       end
       D{w}=Boot;
end
toc

Если я бегуparfor цикл с4 местным рабочим в моем Macbook Pro это занимает 1,2 сек. Заменаparfor сfor это занимает 0,01 сек.

С моими фактическими данными разница во времени составляет 31 с против 7 с [создание матрицыC тоже сложнее].

Если правильно поняли, проблема в том, что компьютер должен отправитьbaseAкаждому местному работнику, и это требует времени и памяти.

Не могли бы вы предложить решение, которое может сделатьparfor удобнее чемfor? Я думал, что спасение всех клеток вbaseA был способ сэкономить время, загрузив один раз в начале, но, возможно, я ошибаюсь.

Ответы на вопрос(2)

Ваш ответ на вопрос