Я читаю » Лучше, быстрее, легче Java »(Брюс Тейт и Джастин Гетланд), и я знаком с требованиями к удобочитаемости в командах гибких типов, например, что Роберт Мартин обсуждает в своих книгах по чистому кодированию. В команде, в которой я сейчас работаю, мне прямо сказали не использовать оператор +
, потому что он создает дополнительные (и ненужные) строковые объекты во время выполнения.
Но в этой статье , написанной еще в '04, говорится о том, что распределение объектов - это примерно 10 машинных инструкций. (по сути бесплатно)
Здесь также рассказывается о том, как сборщик мусора помогает снизить затраты в этой среде.
Каковы реальные компромиссы производительности при использовании +
, StringBuilder
или StringBuffer
? (В моем случае это StringBuffer
только потому, что мы ограничены Java 1.4.2.)
StringBuffer
для меня приводит к уродливому, менее читаемому коду, как пара примеров в книге Тейта демонстрирует. А StringBuffer
синхронизирован по потокам, что, по-видимому, имеет свои собственные затраты, которые перевешивают «опасность» использования оператора +
.
Мысли / Мнения?