StringBuilder / StringBuffer против оператора «+»

Я читаю » Лучше, быстрее, легче Java »(Брюс Тейт и Джастин Гетланд), и я знаком с требованиями к удобочитаемости в командах гибких типов, например, что Роберт Мартин обсуждает в своих книгах по чистому кодированию. В команде, в которой я сейчас работаю, мне прямо сказали не использовать оператор + , потому что он создает дополнительные (и ненужные) строковые объекты во время выполнения.

Но в этой статье , написанной еще в '04, говорится о том, что распределение объектов - это примерно 10 машинных инструкций. (по сути бесплатно)

Здесь также рассказывается о том, как сборщик мусора помогает снизить затраты в этой среде.

Каковы реальные компромиссы производительности при использовании + , StringBuilder или StringBuffer ? (В моем случае это StringBuffer только потому, что мы ограничены Java 1.4.2.)

StringBuffer для меня приводит к уродливому, менее читаемому коду, как пара примеров в книге Тейта демонстрирует. А StringBuffer синхронизирован по потокам, что, по-видимому, имеет свои собственные затраты, которые перевешивают «опасность» использования оператора + .

Мысли / Мнения?

35
задан mipe34 9 February 2013 в 11:27
поделиться