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.

Yorumlar

Popüler Yayınlar