0

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

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

我的选择对吗?哪一个更适合我的场景?有什么比较可取的吗?请指导我。

4

2 回答 2

18

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

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

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

于 2012-08-31T08:17:26.440 回答
1

当然replaceFirst()更快,它会在第一次出现后停止,同时replaceAll()会扫描整个输入。

于 2012-08-31T08:28:51.837 回答