Visual Studio 2012 单元测试速度慢

24

最近在VS2012上运行单元测试非常缓慢,当我运行它们时,需要大约12秒才开始实际测试。

当我调试时,在第一个断点之前也是同样的情况。

我使用了进程监视器,然后我找到了这个:

CreateFile \\WORKSTATION*\MAILSLOT\NET\NETLOGON SUCCESS

WriteFile \\WORKSTATION*\MAILSLOT\NET\NETLOGON BAD NETWORK PATH

之后它保持9秒的安静。

CloseFile \\WORKSTATION*\MAILSLOT\NET\NETLOGON SUCCESS

这到底是怎么回事?我完全找不到邮槽和Visual Studio之间的关系,但它已经持续了大约2周。

3个回答

29

我曾经遇到同样的问题,使用的是 VS2012 Update 1。根据这里的建议,我在我的网卡上禁用了 NetBios over TCP。现在测试马上就开始了,procmon 显示 \MACHINE*\MAILSLOT\NET\NETLOGON 的等待时间从5秒降至约40微秒。


不错的发现。我的第一个样本测试需要500毫秒...禁用NetBios后,它只需要<1毫秒。 - EJA
这里的结果相同,第一次测试大约需要600毫秒,而使用NetBios几乎是瞬间的,小于1毫秒。 - nrjohnstone
在禁用 NetBIOS over TCP 相关的任何改进之前,您可能需要重新启动 Visual Studio(或者更改可能需要一段时间)。 - David Murdoch
1
这个问题似乎在最新的VS2017中仍然存在,并且是累积性的!如果您有多个启用了Netbios over TCP/IP的网络接口,每个接口都会增加几秒钟的挂起时间。 - Kevin Laity

2
Visual Studio更新1现已发布,显然解决了一些关于单元测试的速度问题。我不知道它是否与Mailslot有关,但如果它作为mstest的通信机制之一在使用中,那么这可能是可能的。从MSDN论坛上可以看到以下内容:
“在即将发布的Visual Studio季度版(参考http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspx),我们进行了一些性能改进。简而言之,我们更改了底层存储机制以改善发现/运行时间。”
下载链接和信息请见此处:

http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/visual-studio-and-team-foundation-server-2012-update-1-now-available.aspx


0

这可能与此无关,但我今天在进行某些测试时注意到我的单元测试似乎越来越慢。偶然退出/重新启动Visual Studio后,我的测试现在速度更快了。单元测试机制中可能存在某种内存泄漏或其他资源问题。我正在运行更新1。


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