【问题标题】:Why can't Visual Studio run on more than one core? CPU at 25%为什么 Visual Studio 不能在多个内核上运行? CPU 25%
【发布时间】:2008-09-10 12:52:04
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio visual-studio-2008


    【解决方案1】:

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

    /MP

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

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

    Edit2:MP 标志可能仅供编译器使用。

    【讨论】:

    • 这适用于所有事情?我唯一知道它适用的就是构建,至少根据 MS 的说法,这是适用的。
    • 这仅适用于 C/C++ 项目。它没有 C# 的选项。
    • 此外,只有当您的解决方案有多个项目或可能构建配置时,它才会有所作为。
    • 如果您将一个以上的源文件提供给一个编译器调用,则会有所不同。不幸的是,makefile 不能以这种方式工作。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      如果有人遇到这个老问题,VS2012 引入了并行构建作为standard feature。引用文章:

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

      【讨论】:

        【解决方案4】:

        现在 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 属性。

        【讨论】:

          【解决方案5】:

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

          来自somasegar blog

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

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

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

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

              【讨论】:

                【解决方案8】:

                对于 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。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-10-09
                  • 2010-10-25
                  • 2020-11-17
                  • 1970-01-01
                  • 2019-05-17
                  • 2013-08-09
                  • 2015-10-15
                  相关资源
                  最近更新 更多