我最近在一个正则匹配相关的项目中遇到了一个问题,它导致运行时 CPU 使用率高达 90%。 我怀疑正则表达式优化是否足够公平,因为它在我的代码并发调用下存在性能问题。
例如,我并发调用此方法 100 次,在运行时,我的 CPU 使用率在一毫秒内上升到 92%。
这是我的编码示例:
String BUY_PATTERN =".*\\b(purchase)\\b.*";
private static boolean isMatchPattern(String pattern, String text) {
return text.matches(BUY_PATTERN);
}
我应该怎么做才能降低 CPU 使用率?你能推荐性能更好的正则表达式模式来为我做同样的工作吗?
我也读过这篇关于回溯的文章,但是通过低回溯重写正则表达式很困难。
谢谢!
https://medium.com/javarevisited/a-regular-expression-makes-the-cpu-soar-to-100-72036a4b0771