Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Visual Studio 2015调试器-对SqlCommand的高性能影响_Sql Server_Performance_Debugging_Iis_Visual Studio 2015 - Fatal编程技术网

Sql server Visual Studio 2015调试器-对SqlCommand的高性能影响

Sql server Visual Studio 2015调试器-对SqlCommand的高性能影响,sql-server,performance,debugging,iis,visual-studio-2015,Sql Server,Performance,Debugging,Iis,Visual Studio 2015,从VS2013升级到VS2015后,我对连接了调试器的web应用程序的运行速度感到震惊。因此,我决定使用来分析一个特别慢的页面,对VS2013和VS2015进行比较: 有趣的是,使用VS2013进行调试时,IIS下的页面加载速度比IIS Express快。但在VS2015中调试时,IIS比IIS Express慢得多 此外,MiniProfiler指出,在SQL相关代码中使用的时间比例很高。因此,我尝试使用在IIS上分析页面-一次连接VS2015调试器,一次不连接: 在VS2015中调试时,

从VS2013升级到VS2015后,我对连接了调试器的web应用程序的运行速度感到震惊。因此,我决定使用来分析一个特别慢的页面,对VS2013和VS2015进行比较:

有趣的是,使用VS2013进行调试时,IIS下的页面加载速度比IIS Express快。但在VS2015中调试时,IIS比IIS Express慢得多

此外,MiniProfiler指出,在SQL相关代码中使用的时间比例很高。因此,我尝试使用在IIS上分析页面-一次连接VS2015调试器,一次不连接:

在VS2015中调试时,似乎有很高比例的CPU时间(实时)花费在SqlCommand.ExecuteReader()上,而在没有附加调试器的情况下,该方法非常有效

我也在另一台电脑上测试过,结果也一样

我的应用程序使用ASP.NET MVC、NHibernate、SQL Server 2014,我使用的是IIS 10


是否有其他人在连接了VS2015调试器的情况下遇到过应用程序性能缓慢的问题,特别是在运行SQL命令时?你知道根本原因是什么以及如何解决吗?

可能是IntelliTrace,试试这个

在我的例子中,它确实是通过大量ado.net插入操作进行诊断的 唯一的选择是在vs2015中禁用诊断


在Viual Studio 2017 rc中,如果您使用函数调用跟踪配置文件,则调用计数是否相同?探查器中的调用堆栈看起来略有不同(调试有ExecuteFinish和AddAll,而非调试没有)。我想知道NH是否出于某种原因正在做更多或不同的事情?我敢打赌2015年的诊断,包括事件记录器(我敢打赌,它可能塞满了sql语句)可能会让你陷入困境。去重新编程并检查一下。查看是否可以禁用此功能,以及从中获得的性能优势。@威尔只是尝试禁用诊断功能,但没有任何区别。@ChrisHynes是的,调用计数相同。请参阅更新的屏幕快照“发现并分析”。能够充满信心地回答这个问题的人将是微软。所以你可以在这里停下来,和他们开一张支持票。如果你有时间,我想你可以试试看。是否可以在数据库上打开SQL跟踪,然后在调试器同时打开/关闭的情况下重试。我的直觉是,当你打开调试器时,VisualStudio试图在2015年变得超级聪明,并向SQL发出命令,这基本上会导致一个问题。然后,您可以比较这两个测试中的语句,看看是否有差异。