Есть ли какие-либо планы по предоставлению внутренних массивов в java.lang.String? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли какие-либо планы по предоставлению внутренних массивов в java.lang.String? [закрыто]

Сообщение Anonymous »

При попытке настроить производительность нашего конвейера синтаксического анализа/проверки/привязки Java XML я заметил следующее:
  • Итерация символов строки через String.charAt() выполняется медленно, см. например Вудстокс (мне удалось проверить это утверждение с помощью собственных тестов):
Промежуточный буфер, в который можно скопировать символы строки в тех случаях, когда такое копирование с последующим доступом к массиву происходит быстрее, чем вызов String.charAt() (что, возможно, на удивление часто случается и особенно важно для более длинных буферов).
  • Копирование в буферный массив с помощью String.getChars() и затем итерация буфера, очевидно, обходится дороже, чем просто итерация по массиву.
  • Библиотеки с высокой оптимизацией производительности, такие как FastJSON, используют смесь небезопасных, устаревших и недокументированных API-интерфейсов (AFAIU) для прямого доступа к резервному массиву String (я проверил с помощью собственных тестов, что этот подход имеет преимущества в производительности)
Знаете ли вы о каких-либо планах «официально» предложить API для прямого доступа к резервному массиву String?
Обновление от 23 ноября 2025 г.:
  • Отредактирован вопрос, чтобы сделать его более кратким, удалены некоторые предположения, почему все работает так, как работает
Возможные ответы на данный момент

[*]Это не лучшее место для вопросов, архитекторы языка Java активны на https://langdev.stackexchange.com/
[*]Несколько комментаторов упомянули, что обещание неизменяемости String мешает прямому доступу к резервному массиву. Интересной идеей в этом аспекте могут быть замороженные массивы. Хотя на первый взгляд JEP выглядит устаревшим и мертвым, Брайан Гетц упомянул Frozen Arrays как желательную функцию еще в этом году (2025).
Внутренне JDK использует построение прямого доступа/нулевого копирования через механизм SharedSecrets (JavaLangAccess.getBytesNoRepl()/newStringNoRepl()или>

Подробнее здесь: https://stackoverflow.com/questions/798 ... ang-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»