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