本地函數變量初始化需要處理時間嗎?例如:本地函數變量初始化需要處理時間嗎?
void foo (void) {
char *str = "hello";
int num = 3;
}
或者像全局變量一樣,它們的值已經在二進制文件的只讀部分中被賦值了嗎?
換句話說:調用一個有很多局部變量的函數,比較一個沒有函數的函數會耗時嗎?
編輯: 我看到很多人在這裏感到憤怒,因爲它似乎我試圖優化我的代碼在一個非常挑剔的/糟糕的方式,這不應該被考慮。我知道這一點。我問這個問題只是爲了理解事情的行爲和功能,而不是爲了優化的原因。謝謝。順便說一句,也許我的代碼是在一個低功耗的MCU上?考慮其他選擇,PC不是唯一的選擇。
指定一個變量可能需要1到4條指令。在1Ghz的處理器上,這隻會持續大約1至4納秒。 – Pace 2010-01-30 19:52:45
您將定義多少個局部變量? 3百萬呢?在注意到相當長的時間之前,您將用盡堆棧空間。不要專注於微觀優化。 – kennytm 2010-01-30 19:52:45
每當我看到像這樣的東西時,我都會生氣。顯然這需要時間。您必須分配一個變量並設置字符串中的所有字符。這個問題沒有定量。學習使用一個分析器,它是唯一的方法來看看你是否應該關心那種開銷,它取決於整個特定的程序。你在準確回答什麼問題? – 2010-01-30 19:55:54