我如何配置 Visual Studio 的测试项目以使用所有 CPU 的内核。
当我运行测试时,我可以在性能指标上看到只有一个内核正在使用(100%),其余 7 个内核未使用。
我在测试项目中有一个调用统一测试的负载测试。
我设置了 200 个用户来调用一个方法。但我需要使用所有核心。
我如何配置 Visual Studio 的测试项目以使用所有 CPU 的内核。
当我运行测试时,我可以在性能指标上看到只有一个内核正在使用(100%),其余 7 个内核未使用。
我在测试项目中有一个调用统一测试的负载测试。
我设置了 200 个用户来调用一个方法。但我需要使用所有核心。
丹尼斯,根据MSDN:
“在非测试控制器方案中添加 Visual Studio 负载测试虚拟用户包 2010 具有解锁所有机器处理器以供使用的额外好处。没有 Visual Studio 负载测试虚拟用户包 2010,您的本地机器只能使用第一个处理器。之后您添加了 Visual Studio 负载测试虚拟用户包 2010,负载测试在运行时可以使用机器上的所有处理器。”
因此,如果您没有用户包许可证,则无法解锁额外的内核。
您的测试代码很可能都是单线程的。单元测试是按顺序运行的,因此除非每个测试中的代码是多线程的,否则它只会在一个线程中运行。
请注意,在多个线程中运行测试可能会产生不良后果,单元测试应该只测试单元,如果是多线程的,那么测试应该是单线程的。
你必须在多个线程中工作。试试这个:
class Program
{
static bool isRunning = true;
static void Main(string[] args)
{
BackgroundWorker bw1 = new BackgroundWorker();
BackgroundWorker bw2 = new BackgroundWorker();
bw1.DoWork += delegate(object sender, DoWorkEventArgs e)
{ while (isRunning) { } };
bw2.DoWork += delegate(object sender, DoWorkEventArgs e)
{ while (isRunning) { } };
bw1.RunWorkerAsync();
bw2.RunWorkerAsync();
Console.ReadLine();
isRunning = false;
}
}
您可以根据您拥有的核心数量增加后台工作人员的数量(此示例最大化了我的双核计算机)。您可以在运行工作程序后放置代码,然后通过更改 isRunning 的值来停止它们。