【问题标题】:RegEx.Match is much slower in IIS compared to Development Server (Cassini)?与开发服务器(卡西尼)相比,IIS 中的 RegEx.Match 慢得多?
【发布时间】:2012-07-06 15:49:39
【问题描述】:

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

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

【问题讨论】:

  • 你只测量过一次吗?
  • 不,多次。甚至在两者之间重新启动:它是一致的

标签: asp.net .net iis cassini


【解决方案1】:

找到了!

这似乎是因为 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

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

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多