与Development Server(Cassini)相比,IIS中的RegEx.Match要慢得多?

Tji*_*pke 6 .net asp.net iis cassini

在查看asp.net(webservice)应用程序的性能时,我们注意到在IIS上它比Dev Server(18秒)慢得多(38秒).运行Visual Studio的Performance Profiler(在采样模式下)我们注意到差异是调用regex.Match ?! 在IIS中,它占用了70%的时间,在开发服务器上对同一个应用程序运行相同的测试,它占用的时间不到总时间的1%.

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

Tji*_*pke 5

找到了!

这似乎是因为IIS以64位运行(而casinni可能是32位).通过将应用程序池切换为使用32位,它在IIS中也很快,将其重置为64位并再次变慢.

通过搜索64位+正则表达式慢,我还发现人们已经在2006年找到了这个,并且它应该在.NET 2.0上修复它(参见: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上另见:Windows Server 2008上的正则表达式速度慢)

顺便说一句,如果我不使用RegexOptions.Compiled创建正则表达式时,对64位执行快.但我需要做一些基准测试,看看没有编译它的效果是32位.