Java拆分字符串性能


问题内容

这是我的应用程序中的当前代码:

String[] ids = str.split("/");

在对应用程序进行性能分析时,我注意到用于拆分字符串的时间不可忽略。

我还了解到,split实际上需要一个正则表达式,这对我来说毫无用处。

所以我的问题是, 我可以使用哪种替代方法来优化字符串拆分? 我见过,StringUtils.split但是速度更快吗?

(我会尝试并测试自己,但是对我的应用程序进行性能分析需要花费很多时间,因此,如果有人已经知道答案,那么可以节省一些时间)


问题答案:

String.split(String)如果您的模式只有一个字符长,则不会创建正则表达式。当按单个字符分割时,它将使用非常有效的专用代码。StringTokenizer在这种情况下,速度并不快。

这是在OpenJDK7 /
OracleJDK7中引入的。这是一个错误报告一个commit。我在这里做了一个简单的基准测试


$ java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

$ java Split
split_banthar: 1231
split_tskuzzy: 1464
split_tskuzzy2: 1742
string.split: 1291
StringTokenizer: 1517