Hi,
ich brauche z.Z. kurzum brutale String-Performance und am öftensten nutze ich eigentloch String.split. Daher habe ich mich mal daran gemacht das als erstes umzustellen, da es für meine Zwecke deutlich zu langsam ist.
Hier mal eine kleine Versuchsimplementation von mir, ist nach meinen Messungen zumindest schonmal um den Faktor 2.5x schneller als String.split, aber das geht doch sicher noch schneller oder? Ideen, Vorschläge etc. bitte hierher
Btw. mein Schwerpunkt liegt eher bei sehr langen Strings von 100kb bis 100mb
ich brauche z.Z. kurzum brutale String-Performance und am öftensten nutze ich eigentloch String.split. Daher habe ich mich mal daran gemacht das als erstes umzustellen, da es für meine Zwecke deutlich zu langsam ist.
Hier mal eine kleine Versuchsimplementation von mir, ist nach meinen Messungen zumindest schonmal um den Faktor 2.5x schneller als String.split, aber das geht doch sicher noch schneller oder? Ideen, Vorschläge etc. bitte hierher
Btw. mein Schwerpunkt liegt eher bei sehr langen Strings von 100kb bis 100mb
Code:
public class StringHelper {
public static String[] split(String string, String splitter) {
char[] stringChars = string.toCharArray();
char[] splitterChars = splitter.toCharArray();
ArrayList<String> list = new ArrayList<String>();
int splitterLen = splitter.length();
int k = 0, last = 0;
for (int i = 0, j = string.length(); i < j; ++i) {
if (stringChars[i] == splitterChars[k])
++k;
else
k = 0;
if (k == splitterLen) {
list.add(string.substring(last, i - --k));
last = ++i;
k = 0;
}
}
if (last < stringChars.length)
list.add(string.substring(last));
String[] result = new String[list.size()];
return list.toArray(result);
}
}