代码之家  ›  专栏  ›  技术社区  ›  Erx_VB.NExT.Coder

Visual Studio 2008、2010或2012(v11)是否编写为使用多核?

  •  16
  • Erx_VB.NExT.Coder  · 技术社区  · 15 年前

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

    我正试图决定我是应该得到一个更高的时钟双核还是一个更低的时钟四核,因为我想尝试找出哪种处理器将给我在Visual Studio 2010或2012(v11)(IDE和后台编译器)方面的最佳体验。

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

    我是一个VB程序员,他们在2010年和2012年都有了很大的性能改进,恭喜(除了可怕的灰阶设计和到处都是大写),但我希望能够无缝地使用vs…有人有什么想法吗?另外,我不太担心解决方案加载时间,因为我一次只编码一个项目。

    谢谢。

    7 回复  |  直到 11 年前
        1
  •  8
  •   Brian    15 年前

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

        2
  •  13
  •   Mehrdad Afshari    15 年前

    msbuild支持并行生成项目。Visual Studio 2008利用多个处理器 compile projects .

        3
  •  11
  •   montonero    14 年前

    正如其他人所指出的,MSV2010确实使用了多个编译过程。尽管如此,它不会自动转换为大大缩短的编译时间。 我刚刚用一个中型C++项目做了一个测试(大约200个文件)。 它在3.4 GHz的双核上比2.8 GHz的四核上建立得更快。尽管双核处理器更便宜。(每个系统实际上都与4Gib DDR2 RAM相同)。 我还必须注意到,在编译期间,双核处理器的最大负载是70%。正如您所看到的,如果VS2010甚至不能完全加载2个内核,那么拥有4个或更多的内核又有什么意义呢?

        4
  •  6
  •   Daniel Dyson    13 年前

    忘记CPU。你能给你的机器带来的最大的性能提升就是一个固态驱动器。编译和后台进程(如resharper和intellisense)的IO强度非常高,以致于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英镑。你不会后悔的。

    另外,看看斯科特·古思里的沼泽地。 http://weblogs.asp.net/scottgu/archive/2007/11/01/tip-trick-hard-drive-speed-and-visual-studio-performance.aspx 具体地说,我引用:“…在必要的时候权衡购买额外的CPU处理器速度,转而投资更快的磁盘”。如果有人知道,您会期望Visual Studio开发团队的负责人知道。

        6
  •  1
  •   LenChaney    14 年前

    要考虑的问题是您在开发环境中使用虚拟化。无论Visual Studio是否使用多核,虚拟化都绝对可以使用多核。我有多个开发环境,每个环境都有自己的虚拟机。

        7
  •  1
  •   Co7e    11 年前

    这个问题已经过编辑,提到了VS2012,但大多数答案可以追溯到它发布之前。VS2012将并行构建作为 standard feature . 因此,有更好的机会在一个有能力的CPU上轻松地利用更多的核心。然而,如前所述,如果您想要短的编译时间,快速硬盘驱动器是必不可少的,最好是高端SSD。

    关于硬盘或CPU是否是更好的投资,有一些争论,但是改进两者都应该有很大的影响。在大多数市场上,开发人员的时间成本远远超过硬件成本,因此通常最好购买最好的CPU和硬盘驱动器。唯一需要考虑的是,收益递减的规律在最顶端。

    引用有关基于VS2012的并行构建的文章:

    Visual Studio 2010包含“最大并行数”选项 尽管没有任何限制的迹象, 此IDE选项仅用于C++项目。幸运的是,这个 限制不再适用于Visual Studio 11。相反,现在 完全支持其他语言的并行构建。查看 这样,同时运行Process Explorer的副本 许多项目正在建设中。您将看到多个msbuild 创建实例——数量与“最大数量”中指定的数量相同 并行项目构建。”