如何减少 Java 中正则表达式匹配过程的 CPU 使用率?

问题描述 投票:0回答:0

我最近在一个正则匹配相关的项目中遇到了一个问题,它导致运行时 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

java regex performance cpu-usage
© www.soinside.com 2019 - 2024. All rights reserved.