Ответ
Да, был случай, связанный с преждевременной оптимизацией. Я предложил заменить использование StringBuilder на обычную конкатенацию строк (+) в цикле, полагая, что JIT-компилятор Java её оптимизирует.
Почему это было ошибкой:
- Внутри цикла каждая итерация с оператором
+создаёт новый объектString, что ведёт к излишнему потреблению памяти и нагрузке на сборщик мусора. StringBuilderизначально предназначен для эффективной сборки строк в циклах, так как использует изменяемый внутренний буфер.
Действия после:
- Провёл нагрузочное тестирование обоих вариантов и убедился в просадке производительности моего предложения.
- Откатил изменения.
- Зафиксировал в комментарии к коду причину выбора
StringBuilder, чтобы избежать подобных вопросов в будущем.
Вывод: Важно подкреплять архитектурные гипотезы данными (профилированием, тестами) и не пренебрегать established best practices без веских оснований.