使用正则表达式比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的性能就越好。