Matlab 运行时间(使用循环和不使用循环)
我想显示两个函数的运行时间。下面你可以看到两个函数Matlab 运行时间(使用循环和不使用循环),matlab,Matlab,我想显示两个函数的运行时间。下面你可以看到两个函数 function example( origimg,t,bwimg ) imOriginal=imread(origimg); tic imOriginal=rgb2gray(imOriginal); for i=1:size(imOriginal,1) for j=1:size(imOriginal,2) for k=1:size(imOriginal,3)
function example( origimg,t,bwimg )
imOriginal=imread(origimg);
tic
imOriginal=rgb2gray(imOriginal);
for i=1:size(imOriginal,1)
for j=1:size(imOriginal,2)
for k=1:size(imOriginal,3)
if imOriginal(i,j,k)>t
imOriginal(i,j,k)=0;
end
end
end
end
figure,imshow(imOriginal);
toc
imwrite(imOriginal,bwimg);
end
还有另一个功能
function example2( origimg,t,bwimg )
imOriginal=imread(origimg);
tic
imOriginal=rgb2gray(imOriginal);
i = imOriginal>t;
imOriginal(i)=0;
figure,imshow(imOriginal);
toc
imwrite(imOriginal,bwimg);
end
所以当我比较函数的运行时间时,我遇到了一个奇怪的结果
示例2的运行时间高于示例1。我的错在哪里?找出所有您不想测量的常见代码:
function img = example(img,t)
for i=1:size(img,1)
for j=1:size(img,2)
for k=1:size(img,3)
if img(i,j,k)>t
img(i,j,k)=0;
end
end
end
end
end
function img = example2(img,t)
i = img>t;
img(i)=0;
end
function measure(origimg, t, bwimg, func)
imOriginal=imread(origimg);
imOriginal=rgb2gray(imOriginal);
tic
imModified = func(imOriginal, t);
toc
figure,imshow(imModified);
imwrite(imModified,bwimg);
end
然后,您可以比较两种方法,例如:
measure('inputimg.png', 0.5, 'bwimg.png', @example);
measure('inputimg.png', 0.5, 'bwimg.png', @example2);
如果您仍然没有得到显著的差异,您应该使用更大的图像,或者在for循环中重复您正在评测的代码(在tic/toc中)N次(例如1000次)
我家里没有Matlab,所以没有试过任何代码。试一下imOriginal((imOriginal>t))=0;数组的大小是多少?计时的值是多少?因为如果你只看到几微秒的运行时间,你的图像根本不足以在这两种方法之间进行公平的比较。。。