1


関数が多数の変数を返す必要がある場合、必然的に実行に時間がかかりますか? 値を計算して配列に格納する関数があります。呼び出されるたびにこれらの値を計算し、呼び出される回数は変更されていません。ただし、いくつかの戻り値を追加したため (それぞれが約 1500 個の double 要素を持つ大きな配列であり、関数はそれらを計算するだけでなく、そのような配列を 8 ~ 10 個返します)、関数の実行に時間がかかるようです (前に tic を使用して確認)関数呼び出しと関数呼び出し後の toc.これにより、合計実行時間が長くなりますか?

4

1 に答える 1

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

そのため、もっと時間がかかりますが、違いが他の考慮事項を上回るほど興味深いものになるかどうかは疑問です.

于 2013-01-22T13:15:26.237 に答える