2016-01-14 31 views
2

我通常對變量執行操作,然後將該操作的結果分配給變量。就在幾個這樣的例子:對變量執行操作並將其分配給同一變量

A = [A; -A]; 
B = B.'; %' 
bigArray = bigArray(:,:,1:8,9); 
distMatrix = sqrt(sum(distMatrix.*distMatrix,3)); 

它更快/更高效/更好的編碼實踐,以避免這樣的使用和答案分配給一個新的變量,如:

myNewArray = sum([elephant(operation(myArray),8); -myArray.'],3); 

在我看來,它應該被認爲是更好的編碼實踐,但是從純粹的速度和記憶的角度來看,哪個更好?

謝謝。

+1

在相關說明中,Matlab提供了一個分析器。所以,如果你想知道性能,你總是可以針對兩種實現運行profiler並檢查差異。 [分析器幫助](http://www.mathworks.com/help/matlab/matlab_prog/profiling-for-improving-performance.html) –

+0

@JeremyMangas謝謝,我想過使用分析器,但我並不完全一個完全實施的代碼垃圾郵件在這個階段! – Lui

+0

也似乎代碼美麗不識別MATLAB的'。'運算符,但認爲我沒有關閉我的報價! – Lui

回答

3

就速度和性能而言,與您正在執行的計算相比,新變量的分配開銷很小。從技術上講,重用現有變量避免了創建新變量所需的新參考。如果您使用的是64位操作系統,則會有8個字節的內存。

這個分配的性能可能會被注意到的唯一時間是如果你不斷地在一個循環內分配一個新的變量。即使如此,參考將在堆棧中,因此它仍然可以忽略不計。

相關問題