I think String.split() is rather slow, because it uses regular expressions, whereas here you only have a constant character. Maybe it's optimized for that, and I remember you've said you've done some performance measurements here... Anyway, it might make sense to replace this with a very simple custom piece of code that looks for the specified char and performs substring().