Самый эффективный начальный размер емкости для StringBuilder?
Я пишу много материала для входа в пакеты и оптимизирую путь данных. Я строю текст журнала сStringBuilder
, Какова была бы наиболее эффективная начальная емкость с точки зрения управления памятью, чтобы она работала хорошо независимо от JVM? Цель состоит в том, чтобы почти всегда избегать перераспределения, которое должно покрываться первоначальной емкостью около 80-100. Но я также хочу тратить как можно меньше байтов, так как экземпляр StringBuilder может зависать в буфере, и расточительные байты возникают.
Я понимаю, что это зависит от JVM, но должна быть некоторая ценность, которая будет тратить наименьшее количество байтов, независимо от JVM, своего рода «наименьшего общего знаменателя». Я сейчас пользуюсь128-16
где 128 - это хорошее круглое число, а вычитание предназначено для накладных расходов. Кроме того, это можно считать случаем «преждевременной оптимизации», но поскольку ответ, который я получаю, - это «правило большого пальца», зная, что оно будет полезно и в будущем.
Я не ожидаю ответов "моя лучшая догадка" (мой собственный ответ выше уже есть), я надеюсь, что кто-то уже исследовал это и может поделиться основанным на знаниях ответом.