根據其他函數的輸出在函數調用中指定輸入參數是否影響性能? 峯值內存使用量會受到影響嗎? 如果我使用臨時變量並在計算每個中間步驟後清除它們會更好嗎?Matlab函數參數傳遞
對於前:
g=imfill(imclearborder(imdilate(Inp_img,strel('square',5))),'holes');
或
temp1=imdilate(Inp_img,strel('square',5));
temp1=imclearborder(temp1);
g=imfill(temp1,'holes');
clear temp1
這將是峯值內存使用量和速度方面比較好?
據我所知,使用函數調用只是使用隱藏的臨時變量被清除。有人可能會有更深入的知識。你可以嘗試兩種方式並使用'profiler'來查找,並讓我們知道是否有任何區別! –
我希望這兩種解決方案都具有相同的內存密集性,除非JIT在兩種解決方案之間進行區分。另外,如果你打算重用'temp1',那麼第二種方法應該是首選的(同樣,除非JIT'爲了進一步計算而緩存'中間結果)。如果您使用的是Windows,請嘗試打開任務管理器並檢查內存使用情況的兩種解決方案。 – Oleg