6

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

所以任何人都可以解释 IIS 和开发服务器之间这种奇怪的行为差异???我已经尝试过具有不同应用程序池设置的东西......但没有任何帮助

4

1 回答 1

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

顺便说一句,如果我在创建正则表达式时不使用,它在 64 位上也能快速执行。但是我需要做一些基准测试来看看不编译它对 32 位的影响。RegexOptions.Compiled

于 2012-07-07T13:03:58.730 回答