Visual Studio如何提高C++性能

jopen 12年前發布 | 21K 次閱讀 Visual Studio

  在 Build 2012 開發者大會上,Jim Radigan 和 Don McCrady 做了一個演講,討論了改進的 Visual Studio 2012(VS2012)編譯器為 C++ 程序開發者帶來了哪些益處。Radigan 首先從最初的 Pentium 處理器的出現開始對計算能力不斷提高的歷史進行了簡要的概述,繼而引出了自己的話題“一切都是為了性能:使用 Visual C++ 2012 最大化硬件利用率”。

  第一代 Pentium 處理器有 310 萬個晶體管,而目前這一代 Ivy Bridge 處理器有 14 億個晶體管。正如 McCrady 之后所提到的,C++ AMP 允許開發者通過一種語言來使用這一切——包括 CPU 以及越來越多地集成于 CPU 內核(CPU Dies)中的 GPU(不包括獨立擴展卡之中的 GPU)。

  與一般的代碼相比,以C++ AMP 為目標的代碼往往能夠提供最佳性能,接下來 Radigan 提到了 VS2012 中的自動矢量化和自動并行化優化,這意味著在很多情況下僅重新編譯已有的 C++ 代碼就能直接獲益。這也導致了 VS2012 中優化器的大小是之前版本中的兩倍。

  開發者想要確保編譯器檢查代碼從而進行加速時,可以對代碼片段進行標記。下面的編譯器指令

#pragma loop (hint_parallel (4))

  允許開發者向編譯器提供線索:包含該編譯器指令的循環應該被擴展到多個核上(該代碼片段中是 4 個核)。當然,編譯器依然會進行全面的分析,所以如果被標記的代碼塊不適合并行化,那么編譯器就不會進行任何優化。

  Radigan 通過一個光線跟蹤的演示證明了僅是簡單地在 VS2012 下重新編譯源代碼就帶來了 16 倍的性能提升。Radigan 強調說,盡管 VS2012 改進了編譯器性能,但是并沒有能夠自動產生更快速的代碼的“靈丹妙藥”。編譯器團隊會繼續尋求創新,因為 Windows 8、SQL Server 以及 Office 都是 C++ 應用程序。

  Radigan 指出雖然現在并沒有任何可用的東西,但是他想向 AMP 中添加原生的 C# 支持。(目前 C# 開發者能夠通過P/Invoke使用AMP。)最后,C++ AMP 規范是一個開放標準,但是現在 Apple 的平臺(iOS 或者 Mac OS X)上并沒有相應的實現,但是理論上是可以的。

  英文原文:http://www.infoq.com/news/2012/11/vs2012_CPP

來自: InfoQ

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!