java最有效的分句方法
我正在编写一个应用程序,它在很大程度上依赖于将大字符串分割成单个单词。因为我必须处理这么多的字符串,所以我担心效率。我正在使用字符串。拆分来完成此操作,但我不知道是否有更有效的方法来完成此操作
private static String[] printWords(String input) {
String splitWords[] = input.split(" ");
return splitWords;
}
你可以在下面搜索框中键入要查询的问题!
我正在编写一个应用程序,它在很大程度上依赖于将大字符串分割成单个单词。因为我必须处理这么多的字符串,所以我担心效率。我正在使用字符串。拆分来完成此操作,但我不知道是否有更有效的方法来完成此操作
private static String[] printWords(String input) {
String splitWords[] = input.split(" ");
return splitWords;
}
# 1 楼答案
几年前,当我计时时,(Java6)字符串。split()比使用indexOf()搜索单个空格字符要慢得多,因为前者有很多正则表达式的负担
如果你的句子总是在空格处分开,(有点可疑?)而且性能确实是个问题(做一些真实的测试),定制代码会更快
根据David Ehrmann评论中提供的链接,Java7似乎有了一些加速。我的测试是用Java6进行的
# 2 楼答案
虽然Sun/Oracle的员工总体上做得不错,但仍有改进的余地,特别是因为您可以专门解决您的具体问题。有时,当你不依赖JITC来完成所有的工作时,你可能遇到一个巨大的加速因子是可以实现的情况。这种情况很少见,但是exist
例如
String.split
在一般情况下调用Pattern.compile
,然后预计算的Pattern
肯定会赢对单字符模式进行了优化,避免了正则表达式开销,因此可能的增益是有限的。不过,如果性能真的很重要,我还是会尝试番石榴的Splitter和手工制作的解决方案
也许你会发现空间分割不是你想要的,然后收益会更大