2012-07-06 52 views
6

在查看asp.net(webservice)应用程序的性能时,我们注意到在IIS上它比Dev Server(18秒)慢得多(38秒)。 运行Visual Studio的性能分析器(采样模式下)我们注意到不同之处在于调用regex.Match ?!在IIS中,它占用了70%的时间,对开发服务器中的相同应用程序运行相同的测试,所占时间不到总时间的1%。与开发服务器(Cassini)相比,RegEx.Match在IIS中速度要慢很多?

因此,任何人都可以解释这种奇怪的差异在IIS和Dev服务器之间的行为? 我已经尝试了不同的应用程序池设置...但没有任何帮助

+1

你只测量过一次吗? – 2012-07-06 15:52:01

+0

不,多次。即使在两者之间重新启动:它是一致的 – Tjipke 2012-07-07 12:24:49

回答

5

发现它!

这似乎是因为IIS运行在64位(和casinni可能在32位)。通过切换应用程序池以使用32位,它在IIS中也很快,将其重置为64位,并且速度又很慢。

通过对64位+正则表达式搜索速度慢,我还发现,人们已经发现了这个在2006年,也即它应该被固定在.NET 2.0中的SP(参见:http://blogs.msdn.com/b/bclteam/archive/2007/05/21/the-regexoptions-compiled-flag-and-slow-performance-on-64-bit-net-framework-2-0-josh-free.aspx

然而我使用.NET 4.0,所以我也没有想到这个问题依然存在......

(StackOverflow上也见:Regex slow on Windows Server 2008

BTW如果我做不使用RegexOptions.Compiled创建正则表达式时,它执行64位的快速。但我需要做一些基准测试,看看不编译它的效果是在32位上。

相关问题