基本上我想知道2010和2012年的Visual Studio IDE和/或编译器是否编写以利用多核环境(我知道我们可以针对所有版本的多核环境)使用并行性,但这不是我的问题。)

我正在尝试决定是否应该获得更高的时钟双核或更低的时钟四核,因为我想尝试找出哪个处理器将为我提供使用Visual Studio 2010或2012的绝对最佳体验( v11)(ide和后台编译器)。

如果他们在一个核心中运行最重要的部分(后台编译器和其他ide任务),那么如果运行四核,核心将会更快切断,特别是如果后台编译器是最重的任务,我会想象这个很难在多个进程中分离,所以即使它使用多核,如果大多数处理仍然必然发生在一个核心(即最重要的部分),那么你可能仍然会更好地选择更高的时钟CPU。 VS环境)。

我是一名VB程序员,他们在2010年和2012年取得了很大的性能提升,恭喜(除了可怕的灰度设计和大写无处不在),但我希望能够无缝地使用VS ......有人有主意吗?另外,我不太担心解决方案加载时间,因为我一次只编写一个项目。

感谢。

有帮助吗?

解决方案

我认为使用更高时钟的双核可能会更好。我认为VS(以及今天的大多数应用程序)还没有充分利用多线程。 VS可能有几十个线程正在运行,但我认为只有一部分操作才能真正利用它们。很多VS实现是在STA线程上运行的C ++ COM组件,因此UI线程在许多场景中完成大部分工作。作为VS2010的一部分,VS shell的许多部分正在托管代码中重写这一事实将有助于打破更多这些古老的组件STA依赖关系。正如其他人所提到的,一些关键场景(比如构建一个大型解决方案)已经充分利用了多个内核(MSBuild可以很好地并行运行),所以如果那些主导你关心的内容,那么更多内核会更好。但是对于像IDE UI使用和后台编译这样的东西,我认为其中大多数仍然主要是单线程的。我有一个四核盒子在工作,我很少看到VS2008使用超过25%的CPU资源。 (我没有充分使用VS2010来了解哪些情况更好,但我知道至少有一些情况更好。)

其他提示

MSBuild支持并行构建项目。 Visual Studio 2008利用多个处理器来编译项目

正如其他人所说,MSVS 2010确实使用多个进程进行编译。虽然,它不会自动转换为大大减少的编译时间。 我刚刚用一个中等大小的C ++项目(大约200个文件)进行了测试。 它在3.4 Ghz的双核心上比2.8Ghz的四核心更快。虽然双核处理器更便宜。 (系统实际上与4GiB DDR2 Ram相同)。 我还必须注意,在编译期间,双核处理器的最大加载速度为70%。正如您所看到的,如果VS2010甚至无法完全加载2个内核,那么有4个或更多内核的重点是什么?

忘记CPU。您可以为您的机器提供的最大性能提升是固态硬盘。像Resharper和Intellisense这样的编译和后台进程非常密集,以至于visual studio的主要瓶颈就是IO。我从来没有见过VS最大化CPU,无论我现在有没有单核,双四核或8核。

<强>更新 感谢您的评论@Erx ...我不是关于正在进行的确切过程的专家。但是,如果您考虑编译器编译项目所需的读取次数,那么IO命中就不会感到惊讶。 Visual Studio可能会将文件保存在内存中,但是您是否注意到在构建项目并且未保存更改时,文件会在构建开始之前保存?这告诉我msbuild编译器正在访问保存的文件,并且它不使用内存中的文件。如果您已在VS中关闭文件,则无法保证文件仍在内存中,因为它可能已被VS的内存管理清理。因此编译器获得干净的副本是有道理的。这可以是数百或数千个文件。然后是编译输出的编写,NuGet包读取,ConfigGen脚本( http://configgen.codeplex.com/)。你得到了照片。

另外,我已经阅读过Intellisense对文件系统进行了大量读写操作的内容,如果你的硬盘速度很慢,这将对性能产生额外的影响。

Resharper等插件也会攻击文件系统,尤其是后台编译。我永远不会主张删除Resharper,因为它是最好的生产力工具。所以我要重申一下,如果你在一个拥有最新可用内核数量和大量RAM的花哨新系统上大肆渲染,那么在新SSD上花费几百美元/ 100英镑。你不会后悔的。

另外,查看Scott Guthrie对此事的困难 http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio- performance.aspx 具体来说,我引用:“...在必要的情况下,购买额外的CPU处理器速度,而不是投资更快的磁盘”。如果有人知道你会期望Visual Studio开发团队的负责人知道。

要考虑的事项是您在开发环境中使用虚拟化。无论Visual Studio是否实现,虚拟化肯定会使用多个内核。我有多个开发环境,每个环境都有自己的VM。

这个问题已被编辑提及VS2012,但大多数答案可以追溯到发布之前。 VS2012引入了并行版本作为标准功能。因此,有更好的机会可以在功能强大的CPU上轻松使用更多内核。但是,如前所述,如果您需要较短的编译时间,则必须使用快速硬盘驱动器,最好是高端SSD。

关于硬盘驱动器或CPU是否是更好的投资存在一些争论,但是改进要么应该产生重大影响。在大多数市场中,开发人员的时间成本远远超过硬件成本,所以通常你最好购买最好的CPU和硬盘。唯一要考虑的因素是他们最高端的收益递减规律。

引自VS2012上有关并行构建的文章:

  

Visual Studio 2010包含一个“最大并行数”选项   项目建设。“虽然没有任何限制的迹象,   此IDE选项仅适用于C ++项目。幸运的是,这个   限制不再适用于Visual Studio 11.相反,现在已经存在   完全支持其他语言的并行构建。查看   这个,同时运行一个Process Explorer的副本一个解决方案   许多项目正在建设中。你会看到多个MSBuild   创建实例 - 与“最大数量”中指定的数量一样多   并行项目构建。“

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top