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