匿名功能和普通功能之间的性能是否存在差异?例如,函数调用开销的任何变化?
谢谢和问候!
答案 0 :(得分:9)
不幸的是,我找不到任何关于这个问题的具体内容。但是,与普通函数相比,匿名函数应该有额外的开销。
你可以亲自尝试一下。首先创建文件nonanon.m
function x=nonanon(y)
x=y^2;
end
然后用:
创建一个单元格文件%% non anon
tic
for i=1:1000000
z=nonanon(i);
end
toc
%% anon
f=@(x) x^2;
tic
for i=1:1000000
z=f(i);
end
toc
享受,输出:
经过的时间是0.513759秒。
经过的时间是14.434895秒。
结论是匿名函数较慢。
答案 1 :(得分:0)
我重复了user677656
的小测试代码,但是使用y=x*x
而不是平方的小变体(在nonanon
和anon
情况下):
Elapsed time is 0.517514 seconds.
Elapsed time is 0.223450 seconds.
如果我使用y=x^2
变体,我会得到与user677656
类似的结果:
Elapsed time is 0.402366 seconds.
Elapsed time is 7.440174 seconds.
这是Matlab 2012b。我不知道为什么它们会产生不同的结果。
我还测试了y=sin(x)
,它提供了与x*x
案例类似的结果,以及y=sqrt(x)
,这导致了nonanon
的轻微(2.8 vs 3.9秒)优势情况下。