2013-04-01 73 views
0

我有一個簡單的場景,我已經繼承了構建配置與標準配置名稱非常不同的代碼。.NET代碼的代碼優化是否因重新命名而不是發行版而受到影響?

特別是,我們的「生產」配置更像我們的發佈配置。

所以我想我有幾個問題:

  1. 什麼需要被開啓或關閉,只是這樣我就可以仔細檢查,使一些「釋放」的配置?東西,比如代碼優化,調試符號等等。
  2. 如果代碼優化等都打開了,與股票發佈配置有什麼不同,可能是在JIT或編譯器級別硬編碼的東西?
  3. 除了項目#1中的內容以及標準發行版配置中的內容外,還有什麼其他應該啓用/禁用的內容會在配置級別引起顯着的性能影響?
+4

名稱無關緊要,只是設置。 – Gabe

+1

請查看http://stackoverflow.com/questions/2446027/c-sharp-debug-vs-release-performance並鏈接http://blogs.msdn.com/b/ericlippert/archive/2009/06/11 /what-does-the-optimize-switch-do.aspx。感謝看看您是否需要更多信息(即「何時定義DEBUG/TRACE」)。 –

+1

要優化代碼,只需在項目設置的「構建」選項卡中選中「優化代碼」即可。否則,沒有「DEBUG」常量實際上就是「釋放」 –

回答

1

1和2 - 有發佈和調試之間非常小的差異:優化被打開(見what it means by Eric Lippert)並且不存在用於發佈版本定義DEBUG。

瞭解自己兩種配置的不同之處的最簡單方法是創建基本項目並比較調試和發佈的配置部分。

調試:Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "

<Optimize>false</Optimize> 
<DefineConstants>DEBUG;TRACE</DefineConstants> 

發佈:Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "

<Optimize>true</Optimize> 
<DefineConstants>TRACE</DefineConstants> 

也有在調試信息的類型不同,但主要影響調試方便。

3 - 沒有別的東西是所有類型的解決方案通用的,以提高性能。每種類型的解決方案都有調整性能的方法 - 正確的日誌配置,在ASPX中編譯相關文件的選項,NGen到pre-JIT,選擇x86/x64 ......基本上你需要開始定期執行性能工作 - 設定目標,調整/優化。

相關問題