Sadece Matlab ve bilgisayarı yeniden başlattıktan sonra, bu basitleştirilmiş kod artık benim için problem iyi üretmesi keşif yaptıNeden temp olarak adlandırılan bir klasöre kaydetme, Matlab'da bir for döngüsünde yavaşlamak için veri yüklemesine neden oluyor?
ÖNEMLİ GÜNCELLEME ya ... Ben değil mi 'bir komut dosyası ile vaktini alıyorum için çok üzgünüm Çalış. Ancak, eski '' '' 'iç döngüde herhangi bir klasörde (denedim) herhangi bir şey kaydedersem eski yazı benim hala devam ediyor. Benim amacım gereği, kesinlikle ihtiyacım olmadıkça bunu kurtarmamaya çalıştım.
tam olarak çalıştırırsanızload() % .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 behavior in the above script
load() % .mat files size 8x92x240
save() % .mat files size 2920x92x240
load()
save() % .mat files size 365x92x240
load()
save() % .mat files size 12x92x240
, script yaklaşık kaydeder: özgün senaryo save
veya load
aşağıdaki for
döngüler bakımından yapısını ve kullanımı vardır. 10 Gb ve yükler yakl. 2 GB veri.
Tüm komut dosyası oldukça uzun ve çok fazla tasarruf ve yük getiriyor. Maalesef, sorunu indirgenmiş bir versiyonda yeniden üretmeyi başarmadan önce, burada çok pratik olmazdı. Aynı kodun zaman zaman farklı davranabileceğini hayal kırıklığına uğramış olarak keşfettiğimde, davranışı tutarlı bir şekilde yeniden üreten bir sadeleştirme bulması beklenenden daha sıkıcıydı. Sorunu üreten yönetilebilir bir kod hakkında emin olduğumda geri döneceğim.
ÖNCEKİ PROBLEM TANIMI (NB emin anlatılan sorunu yeniden gelmez için aşağıdaki kodu..):
Sadece Matlab, bir tasarruf isim olamaz, o zor yoldan öğrendim Döngüyü bir sonraki turda veri yüklemeyi yavaşlatmadan, for
döngüsünde temp klasörüne geçin. Benim sorum neden?
Sorunu kendiniz çoğaltmak istiyorsanız, lütfen aşağıdaki kodlara bakın. Çalıştırmak için, isimli bir any.mat.ile adlı bir matbala ve kaydetme için iki klasör, temp ve geçici geçici olarak adlandırılan bir matbala ihtiyacınız olacaktır.
clear all;clc;close all;profile off;
profile on
tT= zeros(1,endDay+1);
tTD= zeros(1,endDay+1);
for day = 0:2;
tic
T = importdata('anyData.mat')
tT(day+1)=toc; %loading time in seconds
tic
TD = importdata('anyData.mat')
tTD(day+1)=toc;
for type = 0:1
saveFile = ones(92,240);
save('AnyFolder\temporary\saveFile.mat', 'saveFile') % leads to fast data loading
%save('AnyFolder\temp\saveFile.mat', 'saveFile') %leads to slow data loading
end % end of type
end% end of day
profile off
profile report
plot(tT)
Veri yükleme önemli ölçüde daha uzun zaman alır o komplo y ekseni göreceğimiz zaman sıcaklığına ziyade geçici tasarruf sonra for
döngü içinde. Bunun neden oluştuğunu bilen var mı?
garip görünüyor. Kesinlikle yeniden üretemez. Belki de verilerinizi yükleyebilirsiniz. Ayrıca, daha ayrıntılı bir örnek oluşturmak için - neden kullanılmayan tüm importdata komutlarını kaldırmıyorsunuz? – bdecaf
Hayır, burada tekrarlanamaz. Aslında, "temp" kullanarak daha hızlıdır ... –
Matlab sürümü, işletim sistemi, depolama türü ...? –