2015-04-17 51 views
4

新的C++和試圖學習優化技術,所以希望有人能爲我澄清。什麼是最優化的,存儲參數和傳遞函數或傳遞函數調用參數

是否有這兩個選項之間的真正區別:

1)參數存儲和傳遞的功能

const char *text = getText(var) 
doSomething(text); 

2)傳遞給函數的參數

doSomething(getText(var)); 
電話

我在計算機科學方面沒有足夠的訓練來實現差異當它到達編譯器階段時,不幸的是,任何幫助都會很棒!

+1

對於這樣簡單的微觀優化:如果它有任何區別,並且不改變程序的可觀察行爲,編譯器已經在爲你做。專注於保持代碼的直觀性和可讀性,使用高效的算法以及測量來識別瓶頸。 –

回答

4

假設text僅用於調用doSomething(),編譯器在這兩種情況下肯定會產生相同的代碼。

唯一的區別就是你如何看待兩者之間的可讀性,以及如何在調試器中簡單地在getText()doSomething()之間停止,以防萬一需要。

6

存在技術差異:在

doSomething(getText(var)); 

的參數doSomething是一個右值,而在

doSomething(text); 

的參數是一個左值。然而,在絕大多數情況下,這是無關緊要的,並且這兩行應該在任何體面的編譯器上產生等效的機器代碼,所以選擇任何您發現的可讀性更高的代碼。