gpt4 book ai didi

c# - 何时不使用 RegexOptions.Compiled

转载 作者:IT王子 更新时间:2023-10-29 03:50:37 26 4
gpt4 key购买 nike

我了解使用 RegexOptions.Compiled 的优势 -它通过编译形式的正则表达式而不是在运行时解释它来改进应用程序的执行时间。尽管对于启动时已经很慢的应用程序不建议使用它。

但如果我的应用程序可以承受启动时间的任何轻微增加 -
我不应该使用 RegexOptions.Compiled 的其他场景是什么?

请注意,我多次调用此方法 -

private static string GetName(string objString)
{
return Regex.Replace(objString, "[^a-zA-Z&-]+", "");
}

因此,此方法使用不同的“objString”值调用(尽管 objString 的值也可能重复)。

你觉得这里用RegexOptions.Compiled好/不好?任何网络链接都会非常有帮助。
谢谢!


编辑

我用两者测试了我的网络应用

  • RegexOptions.Compiled
  • Regex实例化为类变量

但我的 Web 应用程序所用时间没有发现任何重大差异 -在这两种情况下,我唯一注意到的是,与连续页面加载相比,第一次加载应用程序所花费的时间是它的两倍,这与我是否使用 RegexOptions.Compiled 无关。

对--
的任何评论为什么我的 web 应用程序需要更长的时间让 Regex 第一次处理并且在后续加载中花费的时间减少到几乎一半或更少 - 是否有任何内置缓存或其他一些 .net 功能在这里有帮助。附言无论我是否使用 RegexOptions.Compiled,这都是一样的。

最佳答案

对于像这样的任何特定性能问题,找出哪种方法更快的最佳方法是同时测试并查看。

一般来说,除非您大量非常 大字符串使用正则表达式,否则编译正则表达式不太可能有太大好处。 (或两者兼而有之。)我认为这更像是一种优化,在您确定存在性能问题并且您认为这可能有所帮助之后进行尝试,而不是随机尝试。

有关 RegexOptions.Compiled 缺点的一些一般性讨论,请参阅 this blog post by Jeff Atwood ;它非常古老(从 .NET Framework 1.1 开始),但据我所知,自编写以来,主要的相关事实都没有改变。


关于c# - 何时不使用 RegexOptions.Compiled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com