为什么Visual Studio无法在多个核心上运行? CPU 25%
我正在用噩梦般的MS测试框架运行Visual Studio 2008. 麻烦的是它正在将我的CPU发送到100%(四核上是25%)。
我的问题是Visual Studio为什么不能在多个核心上运行? M $当然必须在线程上有足够的处理能力才能使其正常工作。
解决方案
回答
我在所有4个CPU上都运行了VS2008. 只需设置此环境变量/项目标志。
/ MP
(可以在" C / C ++设置"的"高级"中设置。在项目设置中)
编辑:MP标志还可以接受一个数字,例如/ MP2,这意味着它将仅在2个内核上运行。仅将其保留为/ MP意味着它将在最大数量的内核上运行。
Edit2:MP标志可能仅适用于编译器。
回答
我们还添加了多核心支持,可为拥有大量项目和较长构建时间的人们在命令行上执行多线程构建。启用多核支持仅需要几个新属性,MSBuild可以管理所有工作以高效地计划项目。 MSBuild团队已经通过在64 CPU的计算机上构建一些项目来测试这种扩展能力。
来自somasegar博客
因此,他们开始这样做,至少对于构建而言是如此。
回答
/ MP标志仅用于构建,至少根据此msdn
现在,我很乐意对此做错,但是我很确定它仅用于构建。当然哪一个仍然非常有用。
回答
我敢肯定这很难。现有的大量使用GUI的大量非线程代码库已转换为多线程。对我来说听起来像十。
但是对我来说似乎使用了多核。 Intellesense似乎是线程化的。该构建系统具有多项目构建功能,还具有C ++多文件构建功能。
这些工具的问题听起来比它们使用CPU的程度要深。
回答
我们可以要求VS并行编译多个项目以及在一个项目中并行编译(!?)。
工具>选项>项目和解决方案>并行项目构建的最大数量。
这也将并行构建C ++和Cin!
回答
现在Visual Studio 2010已经发布了一段时间,请考虑升级以利用MSTest的.testsettings文件中的parallelTestCount属性,如如何:使用具有多个CPU或者内核的计算机更快地运行单元测试中所述。
有一些限制,例如:
- 仅支持简单的单元测试(即,不包括编码的UI测试和ASP.NET托管的测试)
- 测试必须是线程安全的(所有测试都在同一进程中运行)
- 我们不能同时收集代码覆盖率(以及其他数据和诊断信息)
例如,使用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
属性。