我想显示两个函数的运行时间。你可以看到两个函数
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的运行时间高于example1' s。我的错在哪里?
答案 0 :(得分:0)
将您不想测量的所有常用代码分解出来:
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,所以没试过任何代码。