String.valueOf (i) против "" + i или i + "" - PullRequest
3 голосов
/ 20 августа 2011

Я обычно использую "" + i для удобства. Но сравните насчет производительности, я думал, что String.valueOf(i) будет быстрее. Это правильно? Какой из них я должен использовать?

ОБНОВЛЕНИЕ: я прочитал ваши ответы, вот что я могу сказать:
- Только небольшая разница в производительности станет большой, если этот код находится внутри рекурсивного блока.
- Вы не сказали мне точно, что является основным и основным недостатком / преимуществом обоих вариантов.

Ответы [ 3 ]

4 голосов
/ 20 августа 2011

Я не думаю, что вы сможете увидеть какую-либо ощутимую разницу. Похоже, это то, что обычно называют микро (преждевременной?) Оптимизацией и редко является хорошей идеей.

Выберите метод, который вам и вашим коллегам легче всего читать.

3 голосов
/ 20 августа 2011

Выберите, что читает лучше.Затем выполните профилирование приложения, прежде чем что-либо оптимизировать.

Всегда сначала выполнять профилирование (например, с помощью VisualVM , поскольку вы кодируете в Java).

Существует множество ресурсов по профилированиюи оптимизация.Последнее хорошее чтение, с которым я столкнулся, это Пошаговая оптимизация Тони Альбрехта .

И если производительность действительно становится критической, рассмотрите возможность перехода на StringBuilder .

РЕДАКТИРОВАТЬ:

Ну, нет прямого ответа на ваш вопрос imho.Микро-бенчмаркинг производительности String.valueOf(i) против i + "" имеет мало значения.Реальный ответ приходит от тестирования вашего приложения: его собственная сложность и схема доступа к памяти решают все.

Это не мои идеи, но я их покупаю: прекрати программировать, как в 1975 , big O обозначение нуждается в обновлении .

1 голос
/ 20 августа 2011

Я бы использовал

Integer.toString( i )

, если я являюсь целым числом, поскольку для него может быть возможным использовать внутренний кэш для повышения производительности.

Разница будет небольшой, хотя

...