Preallocation vs Noprealloc
Preallocation hafızada önceden yer ayırtarak döngüde içinde her seferinde yapılan yer ayırma işi yükünden kurtulmanızı sağlar. Matlab noprealloc fonksiyonunda A matrisi üzerinde uyarısını yapıyor
zaten ama ben bu uyarının ne kadar yararlı olduğunu göstermek üzere bu yazıyı yazıyorum.
Noprealloc:
function noprealloc
N=500;
for ii=1:N
for jj=1:N
A(ii,jj)=ii*jj;
end
end
end
%tic; noprealloc; toc;
Sonuçlar:
>> tic; noprealloc; toc;
Elapsed time is 0.046691 seconds.
>> tic; noprealloc; toc;
Elapsed time is 0.044318 seconds.
>> tic; noprealloc; toc;
Elapsed time is 0.047735 seconds.
>> tic; prealloc; toc;
Prealloc:
function prealloc
N=500;
A=zeros(N);
for ii=1:N
for jj=1:N
A(ii,jj)=ii*jj;
end
end
end
%tic; prealloc; toc;
Sonuçlar:
>> tic; prealloc; toc;
Elapsed time is 0.009475 seconds.
>> tic; prealloc; toc;
Elapsed time is 0.004234 seconds.
>> tic; prealloc; toc;
Elapsed time is 0.003770 seconds.
zaten ama ben bu uyarının ne kadar yararlı olduğunu göstermek üzere bu yazıyı yazıyorum.
Noprealloc:
function noprealloc
N=500;
for ii=1:N
for jj=1:N
A(ii,jj)=ii*jj;
end
end
end
%tic; noprealloc; toc;
Sonuçlar:
>> tic; noprealloc; toc;
Elapsed time is 0.046691 seconds.
>> tic; noprealloc; toc;
Elapsed time is 0.044318 seconds.
>> tic; noprealloc; toc;
Elapsed time is 0.047735 seconds.
>> tic; prealloc; toc;
Prealloc:
function prealloc
N=500;
A=zeros(N);
for ii=1:N
for jj=1:N
A(ii,jj)=ii*jj;
end
end
end
%tic; prealloc; toc;
Sonuçlar:
>> tic; prealloc; toc;
Elapsed time is 0.009475 seconds.
>> tic; prealloc; toc;
Elapsed time is 0.004234 seconds.
>> tic; prealloc; toc;
Elapsed time is 0.003770 seconds.
Yorumlar
Yorum Gönder