精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Visual Studio 2010中C++并行構建調優

原創
開發 后端
本文將討論的是Visual Studio 2010中C++并行構建調優,著重要談的是MSBuild這樣一個平臺的主要功能。

【51CTO經典譯文】在多處理器計算機上提高構建速度的一個極好方法是充分利用其并行處理能力,如果你在Visual Studio 2010中有一個C++項目,有兩種不同類型的并行構建配置方法供你選擇。

有哪些參數可以調整?

項目級并行構建是由MSBuild控制的,它是在Visual Studio的解決方案級進行設置的(實際上Visual Studio是為每個用戶都保存了設置,與你想象的可能有點不一樣,你可能認為不同解決方案有不同的設置,但UI卻不允許你這么做),默認情況下,Visual Studio選取你機器上的處理器數量作為***并行構建項目的數量,如圖1所示,你可以將這個數字調大調小找出一個并行構建速度最快的合適值,有些人可能喜歡將其調小,以便在構建期間還可以做點其它工作。

并行構建項目

圖 1 并行構建項目的***數量

雖然MSBuild從Visual Studio接管了部分功能,但這里的設置仍然保持和Visual Studio 2008一樣。

如果你正在構建C++或C++/CLI項目,還有一個地方你可以設置并行構建參數,CL編譯器支持/MP參數,它告訴編譯器使用自身的一個單獨實例同時構建它的子集,默認的并行數仍然使用了CPU的數量,但你可以指定一個值,如/MP5,注意現在情況發生了一點變化,因此我要告訴你如何找到這個值,以及在MSBuild格式項目文件中看起來是什么樣子。

打開項目的“屬性”窗口,轉到“C/C++”*“常規”窗口,我建議你選擇“所有配置”和“所有平臺”,在后面你才有更多的可選項。

項目屬性設置

圖 2 項目屬性設置

象往常一樣,通過轉儲,你可以看到項目文件中有什么內容,在“解決方案資源管理器”中的節點上點擊右鍵,選擇“編輯”。

圖 3

編輯節點屬性

下圖顯示了項目文件的一部分代碼。

項目文件代碼示例

圖 4 項目文件代碼示例

在這里,所有類型為“ClCompile”的項目都自動擁有元數據MultiProcessorCompilation,默認值為true,除非明確指定了一個不同的值。

順便說一下,MSBuild項目通常都是一個文件,它們的子元素是元數據,下面是一個例子,注意它們被放在一個“ItemGroup”中。

MSBuild項目文件示例

圖 5 MSBuild項目文件示例

因為這是一個元數據,如果是高手,完全可以直接修改每個文件,你需要為使用了#import的文件禁用/MP,因為它不支持/MP,其它不支持/MP的特性是/Gm,/Gm表示漸進式編譯,更多參數請參考http://msdn.microsoft.com/en-us/library/bb385193.aspx。

回到多處理器CL,如果你想明確告訴CL有多少并行編譯執行,Visual Studio可通過/MP實現,它出現在全局設置中。

C++編譯***并行任務數設置

圖 6 C++編譯***并行任務數設置

Visual Studio通過一個全局屬性CL_MPCount進行設置,這意味著在Visual Studio外構建時將不受任何影響。

如果你選擇一個更細粒度的值,你就不能使用圖形界面進行設置了,因為你根本看不到它的設置項,這時就必須打開項目文件直接進行修改。在CLICompile項目上這是一個完全不同的元數據塊,叫做“ProcessorNumber”,你可以設定一個從1到你認為合理的一個值,然后在/MP后也追加一個同樣的值,如果沒有<MultiProcessorCompilation>,它就會被忽略。

ProcessorNumber和MultiProcessorCompilation設置

圖 7 ProcessorNumber和MultiProcessorCompilation設置

圖中出現的波浪線是一個小小的bug,直接忽略它。

#p#

如何在命令行上構建?

/MP設置來自項目文件,因此在命令行上進行設置作用是一樣的,它是整個MSBuild的一部分,在命令行上構建和在Visual Studio中構建是一樣的效果嗎?在Visual Studio中設置的全局并行設置不會影響到命令行,你必須親自給msbuild.exe傳遞/m參數,這個參數是可選的,如果你不設置,它就使用CPU的數量,但和Visual Studio開箱即用的特性不一樣,在命令行中如果不指定/m參數,它只會使用1顆CPU,這個問題可能在將來的版本中會得到修正。

命令行構建參數

圖 8 命令行構建參數

如果想給/MP選任意的值,你可以設置一個環境變量,或象Visual Studio那樣傳遞一個屬性CL_MPCount。

在每個項目上都設置/MP是很煩人的,怎么才能提高設置效率?

你可能想在多個項目上使用/MP,但你又不想在每個項目上都設置一遍,Visual Studio解決這類問題的辦法是使用屬性表。首先從“視圖”菜單打開“屬性管理器”,根據你使用的設置它的確切位置可能不一樣,下面是一個C++項目設置的位置。

視圖菜單中的屬性管理器

圖 9 視圖菜單中的屬性管理器

在一個項目上點擊右鍵,選擇“添加新的屬性表”:

給項目添加新的屬性表

圖 10 給項目添加新的屬性表

我給它取了一個名字叫做“MultiprocCpp.props”,你將會看到該項目的所有配置都將添加這個屬性表,在它上面點擊右鍵,你將看到與項目相同的屬性窗口,但這個時候你編輯的是屬性表,再次將“Multi-processor Compilation”設為“YES”。關閉屬性窗口,在屬性管理器中選擇屬性表,然后點擊“保存”。

現在可以在編輯器中打開新建的MultiprocCpp.props文件,我的看起來如下:

在編輯器中打開MultiprocCpp.props

圖 11 在編輯器中打開MultiprocCpp.props

仔細查看這個項目文件,你可以看到屬性表通過一個Import標簽應用到每個配置中了,這一點和C++中的#include非常類似。

通過Import引用屬性表

圖 12 通過Import引用屬性表

現在我們就可以重用之前在項目文件中的定義了,于是我可以在屬性管理器中選中多個項目,然后點擊右鍵,選擇“添加現有屬性表”。

為多個項目同時指定屬性表

圖 13 為多個項目同時指定屬性表

OK!現在所有項目編譯時都帶有/MP參數了。

在某些情況下,你可能想要更簡單一點,例如,你可能想要刪除大量的屬性表,幸運的是,MSBuild 4.0有一個強大的,完整的對象模型,你可以使用它,再編寫幾行代碼就可以搞定這種工作了。

如果你不想通過圖形界面進行設置,完全可以自己手動進行編輯,例如,在VS自己的構建中,我們在每個項目的***都設置了一套屬性。

手動設置項目***屬性

圖 14 手動設置項目***屬性

在這里我們定義了所有類型的全局設置,并導入了其它設置,我將在以后的文章中介紹組織大型構建樹的方法。

#p#

并行數量太多了也不好

一般來說,利用完所有處理器或處理器核心就已經足夠了,否則可能會導致機器變慢甚至崩潰,下圖就顯示了這樣一個例子。

太多的并行構建進程很容易讓機器崩潰

圖 15 太多的并行構建進程很容易讓機器崩潰

我是在一臺8 CPU的機器上做的這個實驗,我把解決方案中的所有項目全部開啟/MP了,然后使用msbuild.exe /m進行構建(我使用命令行進行構建不會出現這個問題,但在Visual Studio中進行構建就會出現),如果相關依賴不能阻止它,MSBuild將立即啟動8個項目,每個CL將會一次運行自己的8個實例,因此總共會有64個CL運行考驗我們的處理器核心和磁盤,這樣做不但不能提升速度,反倒會使性能急劇下降。

你可能希望有一天系統能夠實現自我調整,但如果現在遇到這樣的問題,你不得不手工調整。下面是一些建議

◆將全局值設小一點

例如將/m:4減少到/m:3,或使用屬性表將/MP修改為/MP2,如果你的構建中還有其它問題,如有許多的并行項目,但并行的CL不夠,反之亦然,這個時候你都應該將全局并行構建參數調小。

◆為每個項目和配置調整/MP

有些時候使用/MP可能不是***的辦法,你也可以通過配置進行調整,Retail配置可能會使速度變得更慢,因為編譯器要做的優化更多了,為Retail開啟/MP而不是為Debug開啟/MP可能更有意義。

◆獲得超級定制

在你的團隊中,你可能有一系列硬件,也許你的開發人員使用的是雙CPU機器,但夜間構建是在一臺8 CPU的機器上進行的,兩者構建時需要的來源是一樣的,你希望兩者的速度都不能太慢,在這種情況下,你可以使用環境變量,或是在MSBuild標簽上設置條件,幾乎所有MSBuild標簽都可以設置條件。

下面是一個例子,當“MultiprocCLCount”有一個大于零的值時,就可以使用這個值啟用/MP。

通過環境變量調整處理器數量

圖 16 通過環境變量調整處理器數量

MSBuild啟動時將所有環境變量的值作為初始屬性值,因此在我更快速的機器上,我將MultiprocCLCount的值設為8,而在我的開發用機上,我將其設為2。

類似的方法還可以應用到MSBuild.exe的/m參數中,如/m:%MultiprocMSBuildCount%,

在外來條件中還有其它屬性可能很有用,如$(Number_Of_Processors)表示邏輯處理核心數量,它來自環境變量。$(MSBuildNodeCount)是傳遞給msbuild.exe /m參數的值,在Visual Studio中,這個值是通過“工具”*“選項”進行設置的。

***,我希望你能有效利用/m和/MP。希望你對我介紹的MSBuild功能能進一步深入學習,***自己動手配置一次。

原文名:Tuning C++ build parallelism in VS2010

【編輯推薦】

  1. Visual Studio 2010中Parallel類實現并行計算
  2. Visual Studio 2010敏捷利劍:詳解Scrum
  3. 教你如何用好Visual Studio 2010層次驗證
  4. 關注Visual Studio 2010中代碼提示的改進
  5. Visual Studio 2010中C++的四大變化 
責任編輯:彭凡 來源: 51CTO
相關推薦

2010-03-10 09:28:58

Visual Stud

2009-03-17 08:56:57

Visual StudVS2010C++

2009-11-13 14:59:12

Visual Stud

2010-03-11 15:23:44

Visual Stud

2010-03-15 09:04:09

C++Visual Stud

2009-10-27 09:12:50

Visual Stud

2009-09-02 16:21:17

Visual BasiC#語言

2009-07-01 09:26:56

Visual Stud

2009-06-15 14:48:13

Visual C++本狀態管理

2009-12-02 09:43:38

Visual Stud

2009-09-04 09:39:15

Visual Stud

2010-03-02 09:10:41

Visual Stud

2010-06-01 13:32:15

Visual Stud

2010-01-25 16:58:15

C++程序

2009-11-10 13:43:37

Visual Stud

2010-01-14 10:56:43

Visual C++

2023-04-03 07:08:28

C++函數模板

2010-02-22 16:43:33

Visual Stud

2009-11-11 09:48:06

Visual Stud

2010-05-14 15:05:38

Visual Stud
點贊
收藏

51CTO技術棧公眾號

国产精品一区在线| 欧美黄色网视频| 成人欧美一区二区三区小说| 国产精选久久久久久| 极品色av影院| 日本精品视频| 一区二区三区四区中文字幕| 51国产成人精品午夜福中文下载| 欧美一级高潮片| 日韩av三区| 欧美三级视频在线播放| 国产成人一二三区| 三级在线观看| 麻豆精品国产91久久久久久| 欧美成人剧情片在线观看| 在线观看一区二区三区视频| 午夜欧美激情| 亚洲三级电影网站| 91视频免费进入| 亚洲va在线观看| 色婷婷色综合| 97免费观看视频| 日韩视频二区| 久久久国产一区| 人妻少妇精品视频一区二区三区| 亚洲三级在线| 福利视频第一区| 亚洲第一精品区| 视频在线不卡| 国产高清不卡二三区| 青青在线视频一区二区三区| 影音先锋男人资源在线观看| 在线精品视频一区| 在线观看亚洲精品视频| 日本精品免费视频| 韩日视频在线| 91在线视频网址| 成人综合网网址| 国产字幕在线观看| 最新成人av网站| 在线播放日韩专区| 国产a√精品区二区三区四区| 国产精品久久久久av电视剧| 亚洲高清免费在线| 男人的天堂成人| 国产毛片在线看| av成人免费在线观看| 国产精品三级久久久久久电影| 国产精品99精品| 欧美在线二区| 精品国产一区av| 欧美大片免费播放器| 精品一区视频| 在线播放/欧美激情| 午夜欧美福利视频| 中文字幕 在线观看| 亚洲va天堂va国产va久| 伊人网在线免费| 黄色成人在线| 国产精品久久久久影视| 奇米视频888战线精品播放| 丰满少妇被猛烈进入| 国产一区不卡在线| 91色视频在线导航| 91丨porny丨在线中文 | 免费网站免费进入在线| 久久久久国产免费免费| 久久偷看各类wc女厕嘘嘘偷窃 | 性欧美18~19sex高清播放| 亚洲一区二区高清| 欧美成人三级在线视频| 国产亚洲成av人片在线观看 | 一区二区精品国产| 91在线直播| 国产精品久久久久久久岛一牛影视| 日韩精品欧美在线| 国产小视频在线观看| 久久精品在这里| 亚洲精品一品区二品区三品区| 国产人成在线观看| 国产精品你懂的在线欣赏| 亚洲一区二区三区免费看| 日本亚洲精品| 亚洲夂夂婷婷色拍ww47| 国产精品专区在线| 中老年在线免费视频| 欧美中文字幕久久| 亚洲欧美偷拍另类| 无人区乱码一区二区三区| 亚洲成人免费在线视频| 精品无码在线视频| 成人激情视频| 日韩中文在线观看| 99久久婷婷国产综合| 黄色亚洲在线| 欧美综合在线观看| 一级黄色免费看| 精品一区二区三区日韩| 国产伦精品一区二区三区四区免费| 五月婷婷六月激情| 中文字幕 久热精品 视频在线| 一区在线电影| 俺来也官网欧美久久精品| 欧美日韩亚洲系列| 欧美日韩理论片| 五月天亚洲一区| 日韩网站免费观看高清| 欧美爱爱小视频| 久久看片网站| 91久久偷偷做嫩草影院| 日韩在线无毛| 亚洲天堂免费看| 男女超爽视频免费播放| 久久久加勒比| 亚洲黄在线观看| 精品欧美一区二区久久久| 中文视频一区| 国产精品女人久久久久久| av免费观看在线| 久久精品在线免费观看| 国产在线视频综合| 日韩中文在线播放| 亚洲精品久久久一区二区三区 | 亚洲精品av在线| 天天爽天天爽天天爽| 国产一区二区三区久久| 成人性生交大片免费看小说| 深爱五月激情五月| 亚洲天天做日日做天天谢日日欢| 日本一区二区黄色| 亚洲精品在线播放| 中文字幕精品av| 日本中文字幕第一页| 丁香五精品蜜臀久久久久99网站 | 中文字幕高清一区| 内射国产内射夫妻免费频道| 欧美一级大片在线视频| 中文字幕日韩有码| 精品久久久久久久久久久久久久久久| 高清在线不卡av| 一区二区三区免费看| 玛雅亚洲电影| 亚洲成人精品av| 亚洲综合网在线| 麻豆91精品视频| 欧美一区2区三区4区公司二百| 色呦呦在线看| 欧美一区二区三区在线| 国产午夜精品久久久久久久久| 亚洲欧美日韩专区| 国产欧美一区二区在线播放| 性国产高清在线观看| 91精品国产综合久久久久| 成人免费视频入口| 日韩黄色在线观看| 日韩一二三区不卡在线视频| 成人免费无遮挡| 日韩精品视频在线播放| 波多野结衣国产| 99久久久国产精品免费蜜臀| 久久久久99精品成人片| a级日韩大片| 性色av一区二区三区红粉影视| 99久久精品免费看国产交换| 1024亚洲合集| 亚洲第一成肉网| 女人香蕉久久**毛片精品| 亚洲精品欧美日韩| 在线h片观看| 欧美videossexotv100| 国产亚洲欧美精品久久久www | 少妇人妻精品一区二区三区| 婷婷综合五月天| 精品无码在线视频| 久久久成人网| 蜜桃视频日韩| 日韩a**中文字幕| 中文字幕亚洲一区| 国产又大又粗又硬| 一区二区三区精品在线观看| zjzjzjzjzj亚洲女人| 在线播放不卡| 欧美日韩精品不卡| 国产精品蜜月aⅴ在线| 日韩中文字在线| 国产成人三级一区二区在线观看一 | 亚洲成人免费电影| 亚洲欧美色图视频| 蜜桃av一区二区在线观看| 视频一区二区视频| ccyy激情综合| 国产福利成人在线| 欧美激情免费| 精品国产污网站| 日韩一级片中文字幕| 国产精品无人区| 一区二区三区四区影院| 黄色综合网站| 性欧美.com| 999久久精品| 国产精品91一区| 亚洲制服国产| 亚洲欧美一区二区三区久久 | 国产在线精品一区二区中文| 日韩精品三区| 欧美成人亚洲成人| 黄色片视频在线观看| 精品视频一区二区不卡| 久久久久99精品| 国产精品无码永久免费888| 成人做爰www看视频软件| 日韩激情在线观看| 分分操这里只有精品| 日韩一区二区三区免费播放| 大波视频国产精品久久| 亚洲天堂1区| 久久久久久久久网站| 在线观看精品一区二区三区| 精品久久人人做人人爰| 中文字幕在线观看你懂的| 午夜精品免费在线| 日本爱爱小视频| www.在线成人| 欧美日韩久久婷婷| 欧美一级专区| 男女日批视频在线观看| 婷婷亚洲最大| 日韩精品av一区二区三区| 精品久久久久久久久久岛国gif| 热久久美女精品天天吊色| 美女精品视频| 伊人激情综合网| 污污网站免费在线观看| 777xxx欧美| 夜夜狠狠擅视频| 欧美性猛交xxxxxx富婆| 欧美三级一区二区三区| 亚洲国产欧美日韩另类综合| 极品美妇后花庭翘臀娇吟小说| 久久久久久久精| 国产麻豆天美果冻无码视频 | 亚洲色图21p| 欧美一级日韩免费不卡| 中文字幕第31页| 在线一区二区三区| 欧美精品一二三四区| 欧美日韩中文字幕综合视频| 国产无遮挡aaa片爽爽| 一区二区三区日韩在线观看| 黑人と日本人の交わりビデオ| 国产三级欧美三级日产三级99 | 麻豆精品一区二区三区视频| 高清久久久久久| 激情综合激情五月| 99久免费精品视频在线观看| 国产三级视频网站| 2023国产精品视频| 337人体粉嫩噜噜噜| 国产精品久久免费看| 神马久久精品综合| 亚洲综合一二三区| 国产成人精品a视频一区| 大桥未久av一区二区三区| 亚洲欧美另类在线视频| 欧美午夜不卡在线观看免费| 国产日本精品视频| 亚洲娇小xxxx欧美娇小| 国产午夜在线视频| 久久精品国产2020观看福利| 日本性爱视频在线观看| 欧美一级高清免费| 欧美videos粗暴| 国产精品yjizz| 九九久久成人| 激情五月五月婷婷| 国产精品久久久亚洲一区| 亚洲免费一级视频| 国产成人一区在线| 久久精品视频18| 亚洲精品成人精品456| 国产精品久久久久久久久久精爆| 欧美日韩国产123区| 黄色aaa毛片| 中文字幕日韩综合av| 国产在线xxx| 国产精品亚洲精品| 欧美激情久久久久久久久久久| 亚洲韩国在线| 亚洲区一区二| 中文字幕亚洲乱码| 99精品一区二区三区| 小向美奈子av| 日韩欧美在线播放| www.五月婷婷| 在线播放精品一区二区三区 | 国产精品视频资源| 成人精品毛片| 在线综合视频网站| 久久精品91| 亚洲一区和二区| 最近日韩中文字幕| 中文人妻av久久人妻18| 日韩精品一区二区三区在线观看| 成人免费视频| 57pao精品| 草草视频在线一区二区| 亚洲人成人77777线观看| 亚洲欧美成人| caopor在线| 亚洲女同一区二区| 国产美女www爽爽爽| 日韩高清免费在线| 成人影音在线| 成人欧美一区二区三区视频xxx| 久久一区二区三区电影| 欧美二区在线视频| proumb性欧美在线观看| 久草福利资源在线观看| 7777女厕盗摄久久久| 亚洲xxxxxx| 国产精品久久久久秋霞鲁丝| 中文字幕av一区二区三区人| 免费看欧美黑人毛片| 国产jizzjizz一区二区| 黄色一级片中国| 欧美日本在线观看| av网站无病毒在线| 国产精品美女午夜av| 亚洲第一福利社区| 无码播放一区二区三区| 99国产精品久| 一级免费在线观看| 亚洲第一av网站| 3344国产永久在线观看视频| 99久久久久国产精品免费| 午夜精品久久久久99热蜜桃导演| 婷婷激情小说网| 一区二区三区在线免费| 国产黄色av网站| 欧美激情视频三区| 99精品在免费线中文字幕网站一区| 美女av免费观看| 成人午夜av影视| 国产成人自拍视频在线| 亚洲精品97久久| 韩漫成人漫画| 性刺激综合网| 国内成人精品2018免费看| 男女性高潮免费网站| 欧美videossexotv100| 国产乱码精品一区二三赶尸艳谈| 久久精品国产99精品国产亚洲性色| 国产精品视频久久一区| 一区二区精品免费| 精品视频一区二区三区免费| 成人福利在线观看视频| 成人av网站观看| 中文日韩在线| 日韩乱码人妻无码中文字幕久久| 欧美性xxxx极品hd欧美风情| 精品乱码一区二区三四区视频| 国产精品旅馆在线| 亚洲国产不卡| 手机免费看av片| 在线精品视频一区二区| 老司机在线视频二区| 99免费在线观看视频| 国产乱码精品| 纪美影视在线观看电视版使用方法| 3atv在线一区二区三区| 91九色在线播放| 午夜精品一区二区在线观看 | 日本高清在线观看视频| 精品一区久久久| 另类成人小视频在线| 久久无码精品丰满人妻| 亚洲午夜未删减在线观看 | 日韩成人av网站| 国产一区二区三区蝌蚪| 国产精品美女毛片真酒店| 国产亚洲综合久久| 日韩成人精品| 成人在线免费播放视频| 亚洲欧美日韩国产一区二区三区| 天天色棕合合合合合合合| 国产精品免费福利| 亚洲国产第一| 日本伦理一区二区三区| 亚洲级视频在线观看免费1级| 日本久久一区| 1024精品视频| 一区二区三区欧美日| 国产视频福利在线| 国产精品对白一区二区三区| 日本免费新一区视频| 日产欧产va高清| 久久久国产成人精品| 欧美猛男男男激情videos| 不许穿内裤随时挨c调教h苏绵| 欧亚洲嫩模精品一区三区|