6

我正在运行 Visual Studio 2008 和噩梦般的可怕 MS 测试框架。问题是它让我的 CPU 达到 100%(在四核上是 25%)。

我的问题是为什么 Visual Studio 不能在多个内核上运行?当然,M$ 必须对线程有足够的处理才能使其工作。

4

8 回答 8

11

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

/MP

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

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

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

于 2008-09-10T12:57:09.110 回答
6

您可以要求 VS 并行编译多个项目,也可以在一个项目中并行编译(!?)。

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

这也将并行构建 C++ 和 C#!

于 2009-04-23T19:22:31.883 回答
4

万一有人遇到这个老问题,VS2012 引入了并行构建作为标准功能。引用文章:

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

于 2013-07-23T18:45:04.183 回答
3

Now that Visual Studio 2010 has been released for a bit, consider upgrading to make use of the parallelTestCount attribute in MSTest's .testsettings file, as described at How to: Run Unit Tests Faster Using a Computer with Multiple CPUs or Cores.

There are a few limitations, such as:

  1. Only simple unit tests are supported (i.e. excludes coded UI tests and ASP.NET-hosted tests)
  2. Tests must be thread-safe (all tests are run in the same process)
  3. You can't collect code coverage (among other data & diagnostics) at the same time

Example, using 0 to mean auto-detect (the default is 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>

A few blogs have noted that you might have to close and re-open your project for Visual Studio to notice you added/changed that attribute. Also, if you edit the test settings file using the GUI, you'll probably have to re-add the parallelTestCount attribute.

于 2010-07-28T20:09:02.193 回答
2

我们还添加了多核支持,用于在命令行上为那些拥有大量项目和较长构建时间的人进行多线程构建。启用多核支持只需要几个新属性,MSBuild 管理所有工作以高效地安排项目。MSBuild 团队通过在 64-CPU 机器上构建一些项目来测试这种扩展能力。

来自somasegar 博客

所以他们开始这样做了,至少对于构建来说是这样。

于 2008-09-10T12:58:15.160 回答
0

/MP 标志仅用于构建,我们至少是根据这个msdn

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

于 2008-09-10T13:10:54.443 回答
0

我敢肯定这很难。大量现有的 GUI 繁重的非线程代码库到多线程。对我来说听起来像10。

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

这些工具的问题听起来比他们使用 CPU 的程度要深一些。

于 2008-09-10T13:18:30.637 回答
0

对于 Visual Studio 2010,转到工具 > 选项 > 项目和解决方案 > 构建并运行。

然后,您将看到一个条目,用于输入“最大并行项目构建数”的数字;我的电脑有一个 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。

于 2018-01-12T10:02:06.797 回答