私は非常に大きな文字列を可能な限り最速の方法で分割する必要があり、私が行った調査から2つの可能性に絞り込みました:
1. Pattern.compile("[delimiter]").split("[large_string]");
2. 反復しStringBuilder
て呼び出すsubstring
StringBuilder sb = new StringBuilder("[large_string]");
ArrayList<String> pieces = new ArrayList<String>();
int pos = 0;
int currentPos;
while((currentPos = sb.indexOf("[delimiter]", pos)) != -1){
pieces.add(sb.substring(pos, currentPos));
pos = currentPos+"[delimiter]".length();
}
私はそれらをベンチマークしますが、私は理論的な部分にもっと興味があります.なぜ一方が他方より速いのか.
さらに、他の提案があれば投稿してください。
更新:ベンチマークを行ったと言ったように、それぞれが 32 文字の 5 ミルの文字列を生成し、これらは で区切られた単一の文字列に入れられました~~
。
StringBuilder
驚くべきことに、アプローチは平均で最も遅く、2.50-2.55 sec
Pattern.compile.split
の平均で 2 位になる2.47-2.49 sec
Splitter
グアバは、他の人の1.12-1.18 sec
半分の時間で誰もが認める勝者でした(それを提案したfgeに特に感謝します)
助けてくれてありがとう!