在 Java 中哪个更快 - String.contains("some text") 或查找相同文本的正则表达式?

In Java, which is faster - String.contains("some text") or Regex that looks for same text?

正如标题所说,只是寻找一个字符串来匹配客户端通过套接字完成发送数据,所以我可能会在 JSON 字符串中寻找类似 {"Message" : "END"} 的东西。 A最多的字符串将是几百个字符长。

它们都足够快,可以在您不知不觉中结束。最好选择您可以更轻松地阅读的那个。

但从论坛、博客来看 contains 速度更快,但性能差异仍然可以忽略不计

我已经尝试了这两种方法并重复了超过 10 万次,String.contains() 比 Regex 快得多。

然而 String.Contains() 仅对检查精确子串是否存在有用,而 Regex 可让您创造更多奇迹。所以这取决于。

来自How to use regex in String.contains() method in Java

String.contains

String.contains works with String, period. It doesn't work with regex. It will check whether the exact String specified appear in the current String or not.

Note that String.contains does not check for word boundary; it simply checks for substring.

它的性能很好,比 Regex 花费的时间少几分之一秒。

Regex solution

Regex is more powerful than String.contains, since you can enforce word boundary on the keywords (among other things). This means you can search for the keywords as words, rather than just substrings.

因此解析整个字符串需要更多的执行时间。

您可以通过使用 Caliper - Google's open-source framework

创建基准来自行测试

阅读更多关于 What is a microbenchmark?

Detailed Example