2012-12-07 27 views
1

我只是好奇
如果一個函數需要返回大量的變量是否需要更長的時間執行?我有一個函數可以計算值並將它們存儲在數組中。它在每次調用時計算這些值,並且調用次數沒有改變。然而,現在我已經添加了一些返回值(每一個都是一個包含大約1500個double元素的大數組,該函數返回8〜10個這樣的數組而不是僅僅計算它們),該函數似乎需要更長的時間來執行(使用tic進行檢查函數調用後的函數調用和toc是否會導致總執行時間更長?確實matlab函數返回大量變量需要更長的時間執行

+1

你用tic/toc檢查了兩種情況,而且你的返回值需要更長的時間,這一點可以通過你自己的實驗確認。這聽起來像你已經證實,它需要更長的時間。至少對於你的情況。也許看看剖析器。 – johnish

+0

但它應該需要更長的時間?它不計算任何更多的值,但返回它需要計算的值 – user13267

+1

@ user13267它可能是因爲值現在需要複製到父工作區。 – mythealias

回答

1

事實上,如果讓函數輸出更多的參數,它會花費更長的時間,我猜它與存儲結果有關。

這裏是我的testfunction:

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 

因此,這將需要更長的時間,但我懷疑這種差異是否足以引起其他考慮。

相關問題