这三种变体在输入检查/默认初始化方面是否有任何性能比较?
比较一下最近的版本,例如R2014 b和旧版本的R2012 b是有用的。
一个例子:
function foo(a,b)
if nargin < 1, a = 1; end
if nargin < 2, b = 2; end
end
versus
function foo(a,b)
if exist('a','var'), a = 1; end
if exist('b','var'), b = 2; end
end
versus
function foo(varargin)
p = inputParser;
addOptional(p,'a',1)
addOptional(p,'b',2)
parse(p,varargin{:})
end
字符串
在R2014 b上使用Amro的测试套件:
func nargs time
_________________ _____ __________
'foo_nargin' 0 2.3674e-05
'foo_exist' 0 3.1339e-05
'foo_inputparser' 0 9.6934e-05
'foo_nargin' 1 2.4437e-05
'foo_exist' 1 3.2157e-05
'foo_inputparser' 1 0.0001307
'foo_nargin' 2 2.3838e-05
'foo_exist' 2 3.0492e-05
'foo_inputparser' 2 0.00015775
型
2条答案
按热度按时间hyrbngr71#
下面是一些代码来测试这三种方法:
字符串
以下是我在R2014a中获得的内容:
型
和一个漂亮的情节来查看结果:
型
的数据
flvlnr442#
我在2023 b上重新运行了Amro的测试,做了一些修改:
Time Comparison Bar Plot