Использует ли операция объединения "+" в java в System.out.print () память? - PullRequest
1 голос
/ 21 февраля 2020

У меня есть сомнения относительно использования String и String Builder в Java. Я использую Java 1,8

Первая версия:

System.out.println("ServerSocketTimeOut = " + serversocketTimeout + " ReadTimeOut = " + readTimeout  + " SleepDelay =" + sleepDelay);

Вторая версия: -

StringBuilder viewString= new StringBuilder("ServerSocketTimeOut = ");
viewString.append(serversocketTimeout).append(" ReadTimeOut = ")
                        .append(readTimeout).append("SleepDelay =").append(sleepDelay)

Должен ли я получить какую-либо производительность с точки зрения памяти, поскольку StringBuilder является изменяемым?

Version_1 vs Version_2 ??

1 Ответ

2 голосов
/ 21 февраля 2020

В java 1.6+, вероятно, оптимизатор сделает производительность ваших двух версий равной.

Но имейте в виду, что при более сложной конкатенации вы могли бы получить действительно лучшую производительность с StringBuilder. (прочитайте, например, Java: String concat vs StringBuilder - оптимизировано, так что мне делать? )

Если бы я был вами, я бы подумал, слишком ли делегировать какую-то структуру ведения журнала с параметрами, (прочитайте, например, Встроенное форматирование строк против объединения строк в качестве параметра ведения журнала )

Вот краткий пример возможной "версии 3"

LOGGER.info ("ServerSocketTimeOut = {} ReadTimeOut = {} SleepDelay = {} ", serversocketTimeout, readTimeout, sleepDelay);

...