为什么Visual Studio不能在多个核心上运行?CPU占用率为25%

6

我正在使用令人噩梦般的MS测试框架运行Visual Studio 2008。问题是它会使我的CPU占用率达到100%(在四核上为25%)。

我的问题是为什么Visual Studio不能在多个核心上运行?毕竟微软一定对线程有足够的掌握来让这个工作正常运行。

8个回答

11

我已经在所有4个CPU上运行了VS2008。只需设置此环境变量/项目标志。

/MP

(可以在C/C++设置、高级中设置。在项目设置中)

编辑:MP标志还可以接受一个数字,例如/MP2,这意味着它只会在2个核心上运行。将其保留为/MP,则会在最大数量的核心上运行。

编辑2:MP标志可能仅适用于编译器。


1
这适用于所有的东西吗?我所知道的唯一适用它的事情就是构建,至少根据微软的说法是如此。 - pete blair
3
这只适用于C/C++项目,没有C#的选项。 - David Basarab
1
此外,只有在您的解决方案具有多个项目或可能的构建配置时,它才会有任何区别。 - Jon Trauntvein
如果您将多个源文件输入到一个编译器调用中,那么这将产生影响。不幸的是,Makefile 无法以这种方式工作。 - Lothar
/MP(使用多个进程进行构建) - Paul Zahra

6

您可以要求VS并行编译多个项目,以及在同一项目中并行编译。

工具 > 选项 > 项目和解决方案 > 最大并行项目构建数量。

这将同时编译C++和C#!


4
如果有人遇到这个旧问题,VS2012引入了并行构建作为标准功能。文章中的引用:
Visual Studio 2010包括一个“最大并行项目构建数”的选项。虽然没有任何限制的迹象,但是这个IDE选项只适用于C++项目。幸运的是,这个限制不再适用于Visual Studio 11。相反,其他语言现在也完全支持并行构建。要查看这个,请同时运行Process Explorer的副本和正在构建具有众多项目的解决方案。你会看到创建了多个MSBuild实例-与“最大并行项目构建数”中指定的一样多。

3

现在 Visual Studio 2010 已经发布一段时间了,考虑升级以利用 MSTest 的 .testsettings 文件中的 parallelTestCount 属性,如 How to: Run Unit Tests Faster Using a Computer with Multiple CPUs or Cores 中所述。

但是有一些限制,例如:

  1. 仅支持简单的单元测试(即不包括编码 UI 测试和 ASP.NET 托管测试)
  2. 测试必须是线程安全的(所有测试都在同一个进程中运行)
  3. 您无法同时收集代码覆盖率(以及其他数据和诊断信息)

例如,使用 0 表示 自动检测(默认值为 1):

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings
  name="Release"
  id="{GUID}"
  xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>
    These are default test settings for a local test run.
  </Description>
  <Execution parallelTestCount="0">
    (...)
  </Execution>
</TestSettings>

一些博客指出,为了让Visual Studio注意到您添加/更改的属性,您可能需要关闭并重新打开项目。此外,如果您使用GUI编辑测试设置文件,则很可能需要重新添加parallelTestCount属性。

2
我们还添加了多核支持,以便于在命令行上进行多线程构建,这对于那些有很多项目和长时间构建的用户非常有用。启用多核支持只需要几个新属性,MSBuild会有效地安排所有工作以提高效率。MSBuild团队通过在64-CPU机器上构建一些项目来测试此功能的可扩展性。

这段话来自somasegar博客

所以他们开始做了,至少是针对构建方面。


0

/MP 标志仅适用于构建,至少根据这个 msdn 是这样的。

现在我很想错了,但我相当确定它只是用于构建。当然,这仍然非常有用。


0

我确定这很难。将巨大的现有GUI重型非线程代码库转换为多线程。听起来像是10分难度。

但是对我来说它似乎使用了多核心。Intellesense似乎是多线程的。构建系统具有多项目构建和C++多文件构建功能。

你对这些工具的问题似乎比它们如何使用你的CPU更深入。


0

对于Visual Studio 2010,请转到“工具”>“选项”>“项目和解决方案”>“生成和运行”。

然后,您将看到一个条目,用于输入“最大并行项目构建数”的数字;我的PC配备了i7-3770 CPU,四核心超线程技术,因此设置为8。

有关不同版本的Visual Studio的信息,请单击此处并选择您的版本:https://msdn.microsoft.com/en-us/library/cyhcc7zc(v=vs.100).aspx

例如,对于Visual Studio 2010,此属性仅影响C++构建:

指定可以同时构建的Visual C++项目的最大数量。为了优化构建过程,最大并行项目构建数会自动设置为计算机的CPU数量。最大值为32。

但是对于Visual Studio,它适用于C++和C#:

最大并行项目构建数量 指定可以同时构建的Visual C++和Visual C#项目的最大数量。为了优化构建过程,最大并行项目构建数量会自动设置为计算机的CPU数量。最大值为32。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接