分割句子最有效的方法

时间:2014-02-21 03:40:01

标签: java string performance split

我正在编写一个很大程度上依赖于将大字符串分成单个单词的应用程序。因为我必须处理这么多字符串,所以我担心效率问题。我正在使用String.split执行此操作,但我不知道是否有更有效的方法来实现此目的。

private static String[] printWords(String input) {
        String splitWords[] = input.split(" ");
        return splitWords;
    }

2 个答案:

答案 0 :(得分:1)

几年前,当我计时时,(Java 6)String.split()明显慢于使用indexOf()搜索单个空格字符,因为前者有很多正则表达式的包袱。

如果你的句子总是分成一个空格,(有点可疑?)并且性能确实是一个问题(做一些真正的测试),自定义代码会更快。

根据David Ehrmann的评论提供的链接,看起来Java 7取得了一些加速。我的测试是使用Java 6进行的。

答案 1 :(得分:1)

虽然Sun / Oracle的员工总体上做得不错,但仍有改进的余地,特别是因为你可以专注于你的具体问题。有时候,当你不依赖JITC完全开箱即可完成所有工作时,你可以遇到一个巨大的加速因子。这种情况很少见,但是exist

例如String.split为一般情况调用Pattern.compile,然后预先计算好的Pattern肯定会赢。

单个字符模式的优化避免了正则表达式开销,因此可能的增益是有限的。如果表现真的很重要的话,我会尝试Guava的Splitter和手工制作的解决方案。

可能你会发现太空分裂不是你想要的,然后增益会更大。