2009-11-28 61 views
15

基本上我想知道如果2010和2012年的視覺工作室IDE和/或編譯器是編寫以利用多核心環境(我明白我們可以針對多核心環境在所有版本中使用並行性,但這是不是我的問題)。是用Visual Studio 2008,2010還是2012(v11)編寫的使用多核?

我想決定是否應該獲得更高的時鐘雙核或更低的時鐘四核,因爲我想嘗試找出哪種處理器可以爲我提供絕佳的Visual Studio 2010或2012最佳體驗(v11)(IDE和背景編譯器)。

如果他們在一個內核中運行最重要的部分(後臺編譯器和其他ide任務),那麼如果運行四核,內核會更快切斷,尤其是如果後臺編譯器是最重要的任務,我會想象這將很難在多個進程中分離,所以即使它使用多核,如果大多數處理仍然會出現在一個內核中(即最顯着VS環境的一部分)。

我是一位VB程序員,在2010年和2012年,他們已經取得了很大的性能提升,恭喜(除了可怕的灰度設計和大寫無處不在),但我希望能夠無縫地使用VS .. 。 有人有主意嗎?另外,我並不擔心解決方案加載時間,因爲我一次只編寫一個項目。

謝謝。

+1

編制主要是CPU的任務,但撿了SSD將會使GUI似乎更快。 – gradbot 2009-12-03 21:51:19

+0

做ssd'd適合在同一個插槽2.5「高清適合?不需要更改連接器或插槽或任何東西? – 2010-05-12 05:43:02

回答

8

我認爲你可能更適合用更高時鐘的雙核心。我認爲VS(今天的大多數應用程序)還不具備多線程的優勢。 VS可能有幾十個線程在運行,但是我認爲只有一部分操作真正利用了它們。很多VS實現都是在STA線程上運行的C++ COM組件,所以UI線程在許多場景中完成了大部分工作。事實上,很多VS shell都被作爲VS2010的一部分重寫在託管代碼中,這將有助於打破這些古老的STA組件依賴關係。正如其他人所提到的,一些關鍵場景(如構建一個大型解決方案)已經充分利用了多個內核(MSBuild可以並行運行),所以如果這些場景支配你所關心的內容,那麼更多內核會更好。但對於諸如IDE UI使用和後臺編譯之類的東西,我認爲其中大部分仍然大部分是單線程的。我有一個四核心盒子,我很少看到VS2008使用超過25%的CPU資源。 (我沒有足夠認真地使用VS2010知道哪些場景更好,但我知道至少有幾個更好。)

+3

謝謝布萊恩,這是我已經記住的2.0GHz四核和2.93ghz雙核之間的完美澄清,我相信2.93ghz雙核可能是最好的(如果其他人也想知道,基於當前筆記本電腦可用的CPU組件),主要是因爲vs與許多其他應用程序不太可能完美(或接近完美)並行化。 - 再次感謝 – 2009-12-02 01:13:04

+2

我認爲在VS 2010中它是一個非常接近運行的東西,它肯定比以前更加線程化,如果你已經正確地構建了ms,它將並行構建項目。大多數人在他們的解決方案中有幾個項目依賴於每個項目其他以某種方式。 結合這一點,你正在運行的操作系統,電子郵件客戶端,網絡瀏覽器...可能一直是4核心對我有意義。不要認爲一個程序的多個線程會考慮多個應用程序。 – PeteT 2009-12-10 17:04:32

+0

感謝這個輸入pete,它絕對是值得思考的,我想知道vs dev團隊對此有何評論? – 2009-12-13 19:15:49

13

MSBuild支持並行構建項目。 Visual Studio 2008利用多個處理器來處理compile projects

+1

感謝您的輸入,我認爲主要是企業開發人員和多項目開發人員應該注意這一點,如果你正在閱讀 – 2009-12-02 01:15:47

11

正如其他人所指出的,MSVS 2010確實使用多個進程進行編譯。儘管它不會自動轉換爲大量縮短的編譯時間。 我剛剛做了一箇中型C++項目的測試(大約200個文件)。它在雙核處理器上的速度比3.4Ghz更快,比2.8Ghz的四核處理器更快。雖然雙核處理器更便宜。 (系統實際上與4GiB DDR2 Ram相同)。 我還必須注意,編譯期間雙核處理器的負載最大爲70%。正如你所看到的,如果VS2010甚至不能完全加載2個內核,那麼擁有4個或更多內核有什麼意義?

+0

感謝您的注意,我已經投票贊成你:)特別是你是一個新用戶。 – 2010-05-11 04:17:53

+0

+1 ^^的原因一樣 – Basic 2010-09-30 18:31:33

+1

你可能有其他程序除了在Visual Studio中同時運行......這是一個使用四核心或核心八路等等等等... – jcpennypincher 2011-06-29 14:25:09

1

在考慮將在開發環境中虛擬化的使用事情。無論Visual Studio是否使用虛擬化,都明確使用多個內核。我有多個開發環境,每個開發環境都有自己的VM。

6

忘記CPU。您可以爲您的機器提供的最大性能提升是固態硬盤。編譯和後臺進程(如Resharper和Intellisense)密集型IO,以至於視覺工作室的主要瓶頸是IO。無論我是否擁有單核,雙核或8核,我都從未見過VS max超出CPU。

更新 感謝您的評論@Erx ...我不是專家,確切的過程正在進行。但是,如果您考慮編譯器編譯項目的次數,IO命中不會感到驚訝。 Visual Studio可能會在內存中保存文件,但是您是否注意到當您構建項目並且未保存更改時,在構建啓動之前,文件會先保存?這告訴我,msbuild編譯器正在訪問保存的文件,並且它不使用內存中的文件。如果您在VS中關閉了文件,則不能保證該文件仍在內存中,因爲它可能已由VS的內存管理進行了清理。所以編譯器得到一個乾淨的副本是有道理的。這可能是成百上千的文件。然後是編寫輸出的編寫,NuGet包讀取,ConfigGen腳本(http://configgen.codeplex.com/)。你得到的照片。

此外,我已經在某處讀過Intellisense對文件系統進行了大量的讀寫操作,因此如果您的硬盤速度較慢,這將成爲性能的一次重大打擊。

Resharper等插件也碰到了文件系統,尤其是後臺編譯。我絕不會主張刪除Resharper,因爲它是最好的生產力工具。所以我會重申一下,如果你已經用最新的可用內核數量和巨大的內存數量在一個新的系統上飛濺起來,花費幾百美元/ 100英鎊購買一個新的SSD。你不會後悔的。

此外,請查看Scott Guthrie關於此事的問題http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio-performance.aspx具體來說,我引用:「......必要時購買額外的CPU處理器速度,而不是投資更快的磁盤。」如果有人知道你會期望Visual Studio開發團隊的負責人知道。

+0

哇的地步,真的嗎?我對此一無所知。聽說固態硬盤可以做出很大的變化,但不明白爲什麼,因爲我對硬盤驅動器的理解在VS UI中有所不同,只有在開啓大型項目或其他東西時......但我認爲你所說的話是有道理的,所以爲了澄清,在使用期間存儲許多基於UI和基於代碼的變量,列表和項目數據而不是消耗不必要的內存量,這是正確的嗎?我已經忘記了這一點,並且很想知道你很樂意提供,感謝隊友(upvoted)。 – 2012-02-01 12:56:09

+0

這實際上並非如此,CPU似乎是主要因素!我從經驗中說 - 我在1.6Ghz酷睿i5 + SSD機器和3Ghz Athlon 64 X2硬盤上進行了定時編譯。帶有硬盤的Athlon機器快50%左右! – darklon 2012-02-11 15:26:18

+2

我說的是真實的,具體來說,最大的性能提升將是一個更快的硬盤。這並不是說一個更快的CPU根本沒有幫助。當然會的。但是就你的降價而言,換個SSD就行了。另外,你不會像喜歡那樣比較。嘗試在兩臺機器上將速度與相同的HDD進行比較。然後在兩臺機器上使用相同的SSD。然後做你的計算。你會發現,在這兩個測試中,SSD將執行好得多 – 2012-02-11 15:33:25

1

該問題已被編輯提及VS2012,但大多數答案可追溯到發佈之前。 VS2012作爲standard feature引入了並行構建。因此,在有能力的CPU上有更好的機會輕鬆利用更多核心。然而,如前所述,如果你想縮短編譯時間,一個快速硬盤是必不可少的,最好是一個高端SSD。

對於硬盤驅動器或CPU是否是更好的投資存在一些爭議,但改善或者應該產生重大影響。在大多數市場中,開發人員的時間成本遠遠超過硬件成本,所以通常你最好購買最好的CPU和硬盤驅動器。唯一需要考慮的是收益遞減規律,它們是非常高端的。

從關於平行文章報價建立在VS2012:

Visual Studio 2010中包含一個選項「平行 項目的最大數量的基礎之上。」儘管沒有任何限制, 這個IDE選項只適用於C++項目。幸運的是,這種限制不再適用於Visual Studio 11.相反,現在有對其他語言的並行構建的全面支持。要查看 ,請在運行Process Explorer副本的同時使用 許多項目正在構建的解決方案。您將看到創建了多個MSBuild 實例 - 與「並行項目構建的最大數量 」中指定的數量相同。

相關問題