【发布时间】:2012-03-31 12:04:25
【问题描述】:
匿名函数和普通函数的性能会有差异吗?比如函数调用的开销有什么变化?
感谢和问候!
【问题讨论】:
-
一篇您可能感兴趣的相关帖子(但在 JavaScript 上):stackoverflow.com/questions/80802/…
匿名函数和普通函数的性能会有差异吗?比如函数调用的开销有什么变化?
感谢和问候!
【问题讨论】:
很遗憾,我找不到关于该主题的任何具体内容。但是,与普通函数相比,匿名函数应该有额外的开销。
您可以自己尝试一下。首先创建文件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 秒。
由此得出的结论是匿名函数速度较慢。
【讨论】:
我重复了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 秒对 3.9 秒)。
【讨论】: