使用正则表达式比IndexOf更快?
我有一个运行的应用程序,它查看队列中的项目,然后根据某些关键字应用一个类别 – 然后将其插入到数据库中。
我正在使用IndexOf来确定是否存在某个关键字。
这是理想的方式还是RegEX更快?
每秒大约有10件物品正在处理中。
对于仅查找关键字, IndexOf
方法比使用正则表达式更快。 正则表达式很强大,但它们的function在于灵活性,而不是原始速度。 它们不会在简单的字符串操作中击败字符串方法。
无论如何,如果字符串不是很大,那么它并不重要,因为你不经常这样做。
http://ayende.com/blog/2930/regex-vs-string-indexof
似乎关于效率的字符串长度可能很重要。
你确切知道的唯一方法是测试它。 但是做出有根据的猜测取决于你正在测试的关键字数量,文本的长度等等.indexOf可能会获胜。
您确切知道的唯一方法是为您的特定方案编写测试。
我对此表示怀疑 – indexOf
是一个非常简单的算法,只需查找字符串并返回它找到的第一个匹配项。
正则表达式是一个更复杂的机制,需要根据整个字符串进行解析和检查。 如果你的字符串非常大,那么你最好使用indexOf。
首先,每秒10件物品你可能甚至不需要考虑性能。
在大多数情况下, IndexOf
可能比正则表达式更快。 特别是如果你不使用预编译的正则表达式。
它的性能可能还取决于所选的字符串比较/文化。 我希望StringComparison.Ordinal
最快。
为什么不使用System.Diagnostics.Stopwatch类来实验和测量经过的时间? http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
在indexOf操作之前设置一个Stopwatch对象,然后测量它之后的经过时间。 然后,将indexOf替换为正则表达式。 最后,报告您的发现,以便我们也可以看到它们!
至少这个程序员发现理解使用IndexOf的代码更快!
节省一点CPU时间是否足以让下一个人花时间理解代码?
您可以在以下链接中找到有关此查询的信息: http : //ayende.com/blog/2930/regex-vs-string-indexof
总之,似乎表明searchpattern越大,RegEx的性能就越好。