2009-11-28 69 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 实例 - 与“并行项目构建的最大数量 ”中指定的数量相同。

相关问题