函数在matlab编程中占据着重要的角色,matlab为大家提供各种不同类型的函数,不同类型的函数有各自不同的优缺点。今天以匿名函数、内联函数与独立子函数为测试对象,看看这三种在运行效率上谁更具优势,为了大家高效编程提供数据支撑。(注:程序的运行效率除了与代码算法本身有关外,还与计算硬件息息相关,所有测试结果只是小编电脑的数据,大家根据自身条件酌情使用)
为了使计算结果根据合理性,每次统计调用函数一万次,共统计二十次。请看下方示例:
% 匿名函数
afun = @(x) x.^2 + cos(x) + rand;
% 内联函数
ifun = inline('x.^2 + cos(x) + rand','x');
n = 10000;
m = 20;
y = zeros(1,n);
ya = zeros(1,n);
yi = zeros(1,n);
tf = zeros(1,m);
ta = zeros(1,m);
ti = zeros(1,m);
%% 子函数测试段
for g = 1:m
tic;
for k = 1:n
y(k) = fun(k);
end
tf(g) = toc;
end
%% 匿名函数测试段
for g = 1:m
tic;
for k = 1:n
ya(k) = afun(k);
end
ta(g) = toc;
end
%% 内联函数测试段
for g = 1:m
tic;
for k = 1:n
yi(k) = ifun(k);
end
ti(g) = toc;
end
经过20次统计,独立子函数的平均运行时间为0.000918,匿名函数的平均运行时间为0.0013,内联函数的平均运行时间为1.0005。对比可以看出,独立子函数的运行效率最高,内联函数运行效率最低,因此不建议大家在平时的编程过程中少用内联函数。
如有问题或建议,请在公众号或本推文下方留言!
感谢您的阅读!
参考资料:
[1] https://ww2.mathworks.cn/help/matlab/ref/inline.html
[2] https://ww2.mathworks.cn/help/matlab/matlab_prog/creating-a-function-handle.html
封面图片:由 Herbert Aust 在Pixabay上发布