Beim Versuch, die Leistung unserer Java-XML-Parsing-/Validierungs-/Bindungspipeline zu optimieren, habe ich Folgendes beobachtet:
- Das Iterieren der Zeichen eines Strings über String.charAt() ist langsam, vgl. z.B. Woodstox (diese Aussage konnte ich mit eigenen Benchmarks verifizieren):
Zwischenpuffer, in den Zeichen eines Strings kopiert werden können, in Fällen, in denen eine solche Kopie mit anschließendem Array-Zugriff schneller ist als der Aufruf von String.charAt() (was vielleicht überraschenderweise oft der Fall ist und besonders wichtig für längere Puffer).
- Kopieren in ein Pufferarray mit String.getChars() und dann Iterieren des Puffers ist offensichtlich teurer als nur das Iterieren über ein Array.
- Stark leistungsoptimierte Bibliotheken wie FastJSON verwenden eine Mischung aus unsicheren, veralteten und undokumentierten APIs (AFAIU), um direkt auf das Backing-Array eines Strings zuzugreifen (ich habe mit eigenen Benchmarks überprüft, dass dieser Ansatz Leistungsvorteile bietet)
Sind Ihnen Pläne bekannt, „offiziell“ eine API für den direkten Zugriff auf das Backing-Array eines Strings anzubieten?