replaceAll()和replaceFirst().哪一个更快更有效?

bra*_*ess 0 java regex string replace

我正在使用RegEx替换字符串.我知道我在该字符串中搜索的模式可能只出现一次.两者replaceAll()replaceFirst()方法都适用于我的场景.但我正在使用replaceAll()方法.

在我的应用程序中,每毫秒计算是宝贵的.

我的选择对吗?哪一个对我的情况更好?有任何比较可用吗?请指导我.

Joe*_*oey 18

如果每毫秒对你来说都是宝贵的,那么你应该测量不要问.在任何情况下,我的猜测(再次:通过测量验证)replaceFirst()会更快,因为它可以在第一次匹配后停止而不是搜索其他(在您的情况下不会存在).

您可能还想预编译正则表达式,因为这样可以节省您每次调用时的时间replaceFirst().或者寻找一种避免正则表达式的方法,如果它只是一个简单的字符串替换.

但我再次强调:使用分析器找出您花费最多时间的地方并优化该部分.过度优化一次只调用一次的语句并且只占总运行时间的0.07%而忽略它旁边的胖循环,占用运行时间的80%并不是非常有用.同样到目前为止,我的经验是,瓶颈往往是在最令人惊讶的地方,而不是你天真期待的地方.