匿名函数和普通函数之间的性能会有差异吗?

时间:2012-03-14 23:37:20

标签: matlab anonymous-function

匿名功能和普通功能之间的性能是否存在差异?例如,函数调用开销的任何变化?

谢谢和问候!

2 个答案:

答案 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而不是平方的小变体(在nonanonanon情况下):

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秒)优势情况下。