Visual Studio 2005/2008中的「項目屬性」的「生成」選項卡包含「優化代碼」。Visual Studio中的「優化代碼」複選框。它究竟做了什麼?
該文檔聲明它「...啓用或禁用編譯器執行的優化,以使輸出文件更小,更快,更高效」。
- 我的問題是爲什麼我不應該擁有它?
- 爲什麼默認情況下不啓用?
- 它實際上做了什麼?
Visual Studio 2005/2008中的「項目屬性」的「生成」選項卡包含「優化代碼」。Visual Studio中的「優化代碼」複選框。它究竟做了什麼?
該文檔聲明它「...啓用或禁用編譯器執行的優化,以使輸出文件更小,更快,更高效」。
你不會想這對建立一個調試,因爲它使單步執行代碼更難,因爲運行可能無法正確反映你所寫的內容(因爲一些線路將得到優化的實際代碼出)
它不是在默認情況下建立調試由於上述原因,應該在默認情況下釋放啓用構建
它執行優化,如動態內聯和刪除不需要的局部變量。可以在編譯時決定的任何類型的優化。
看看What is /optimize C# compiler key intended for?的答案他們回答你的問題(尤其是Noldorin的回答)。
維基百科對compiler optimization,涵蓋很多基本的優化類型的文章。
你不想創建優化的調試版本。優化會影響代碼的可調試性 - 某些代碼行可能會被刪除,某些函數的不同部分或不同函數的代碼行可能合併在一起,局部變量可能會合並在一起等等。這意味着在調試當前行時,由於代碼被重新組織,檢查當前行可能會隨機跳轉,並且檢查局部變量會非常具有誤導性 - 當不再需要局部變量時,可能會重用局部變量,從而導致亂碼結果。