Chr*_*ips 18 .net c# regex string performance
每次我必须对字符串进行简单的包含或替换操作时,我正在搜索的术语是固定值,我发现如果我采用我的示例输入并对其进行一些分析,则使用编译的正则表达式是几乎*总是比使用String类中的等效方法更快.
我试过比较各种方法(hs
是搜索的"草堆",搜索ndl
的"针",repl
是替换值.regex
总是用RegexOptions.Compiled
选项创建):
hs.Replace( ndl, repl )
VS regex.Replace( hs, repl )
hs.Contains( ndl )
VS regex.IsMatch( hs )
我发现相当多的讨论集中于这两种技术都更快(1,2,3,和其他的负载),但是这些讨论似乎总是集中在:
我不明白这是怎么回事:正则表达式引擎如何比同等字符串版本更快地比较任何两个字符串的子串匹配?这似乎适用于非常小或非常大的搜索空间,或搜索条件的小或大,或者搜索项是在搜索空间的早期还是晚期发生的.
那么,为什么正则表达式会更快?
*事实上,我唯一能够证明字符串版本比编译正则表达式更快的情况是搜索空字符串时!从单个字符串到非常长的字符串的任何其他情况都由编译的正则表达式比等效的字符串方法更快地处理.
更新:添加了一个条款,以澄清我正在查看在编译时已知搜索项的情况.对于动态或一次性操作,编译正则表达式的开销倾向于使结果倾斜以支持字符串方法.
Nik*_*iki 14
我不明白这是怎么回事:正则表达式引擎如何比同等字符串版本更快地比较任何两个字符串的子串匹配?
我可以想到两个原因:
归档时间: |
|
查看次数: |
5362 次 |
最近记录: |