我只是很好奇 如果函数需要返回大量变量,那么执行它需要更长的时间吗?我有一个函数来计算值并将它们存储在数组中。它会在每次调用时计算这些值,并且它的调用次数没有改变。但是现在我已经添加了一些返回值(每个都是一个包含大约1500个双元素的大数组,函数返回8~10个这样的数组,而不是仅仅计算它们)函数似乎需要更长的时间来执行(使用tic之前检查)函数调用后的函数调用和toc。这是否会导致总执行时间更长?
答案 0 :(得分:1)
事实上,如果让函数输出更多的争论,它确实需要更长的时间。我想这与存储结果有关。
这是我的测试功能:
function [q, w, e, r, t, y, u, i, o, p] = tests
q = rand(100);
w = rand(100);
e = rand(100);
r = rand(100);
t = rand(100);
y = rand(100);
u = rand(100);
i = rand(100);
o = rand(100);
p = rand(100);
这些是我用来测试速度的设置:
clear
tic
for i = 1:100
%q = tests; %Only one output argument
[q w e r t y u i o p] = tests; %Several output arguments
end
toc
差别并不大,但我跑了好几次,结果看起来确实很重要:
Only one output argument: 0.1354 average +- 0.0001
Several output arguments: 0.1367 average +- 0.0001
因此需要更长时间,但我怀疑这种差异是否足以超过其他考虑因素。