|
|
1
57
与我典型的自负不同,我在这个答案上有点颠倒了自己。
我的原始答案保存在下面,是基于对版本的检查
1.1
的。NET框架。这很可耻,因为。NET 2.0在我回答时已经发布了三年多,它包含了对
在。NET 2.0(和4.0),静态
这里的显著区别是
这种缓存消耗了静态方法和实例方法之间的大部分性能差异。在我的测试中,静态
在某些情况下,这20%的放缓仍然可能很严重。如果你发现自己要重新排列数亿个字符串,你可能会想尽一切办法提高效率。但我敢打赌,99%的情况下,你使用一个特定的正则表达式的次数不会超过几次,而静态方法所损失的额外毫秒甚至不会很明显。 道具 devgeezer ,他几乎一年前就指出了这一点,尽管似乎没有人注意到。 我的旧答案如下:
静态
是的,初始化
至于你是否应该具体说明
以以下为例:
在
|
|
|
2
34
如果你打算多次重用正则表达式,我会用
|
|
|
3
13
对于的版本,此答案不再正确。NET,我的机器上有。 4.0.30319&2.0.50727都有以下IsMatch功能:
'true'值用于名为“useCache”的构造函数参数。所有Regex构造函数最终都链接到这个构造函数中,静态函数直接称之为“true”。 您在BCL博客文章中阅读了更多关于优化Regex性能的内容,重点介绍了静态方法的缓存使用 here 。这篇博客文章还引用了性能指标。阅读一系列关于优化Regex性能的博客文章是一个很好的起点。 |
|
4
8
我同意Jon的观点,只是为了澄清一下,它看起来像这样:
它也值得一看
|
|
|
5
6
有很多因素会影响使用正则表达式的性能。最终,找出在你的情况下表现最好的唯一方法是使用尽可能现实的情况进行衡量。 页面在 compilation and reuse MSDN上的正则表达式对象涵盖了这一点。总之,它说
|
|
|
6
3
我建议你阅读 Jeff's post 编译Regex。 至于这个问题,如果你问这个问题,这意味着你只会使用一次。因此,Reflector对Regex的分解并不重要。IsMatch是:
|
|
|
7
3
对于我正在开发的WinForm应用程序,我们可以在有效字符上定义一个正则表达式,该正则表达式将在每次按键时运行,并对任何文本框(数据输入应用程序)的文本进行验证,因此我使用了缓存或编译的正则表达式,例如
正则表达式是关键。 然后,我有一个静态函数,可以在验证数据时调用:
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |