在查看asp.net(webservice)应用程序的性能时,我们注意到在IIS上它比Dev Server(18秒)慢得多(38秒)。 运行Visual Studio的Performance Profiler(在采样模式下)我们注意到差异是调用regex.Match ?!在IIS中占70%的时间,在开发服务器上对同一个应用程序运行相同的测试,占用的时间不到总时间的1%。
所以任何人都可以解释IIS和Dev Server之间的这种奇怪的行为差异??? 我已经尝试了不同应用程序池设置的东西......但没有任何帮助
答案 0 :(得分: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上另见:Regex slow on Windows Server 2008)
B.T.W。如果我在创建正则表达式时不使用 RegexOptions.Compiled
,那么也在64位上快速执行。但我需要做一些基准测试,看看没有编译它的效果是32位。