Кажется, стандартная библиотека Java написана с целью снижения стоимости вызовов toString. Например, у Java-массивов и коллекций есть методы toString, которые не перебирают свое содержимое; чтобы получить хорошее строковое представление этих объектов, вы должны использовать Arrays.toString
или Collections.toString
из пакета java.util
.
Точно так же даже объекты с дорогими методами equals имеют недорогие вызовы toString. Например, класс java.net.URL
имеет метод equals, который использует подключение к Интернету для определения, действительно ли два URL равны, но у него все еще есть простой метод toString с постоянным временем.
Так что да, недорогие вызовы toString являются нормой, и если вы не используете какой-то странный сторонний пакет, который нарушает соглашение, вам не стоит беспокоиться о том, что это займет много времени.
Конечно, вам не стоит беспокоиться о производительности, пока вы не окажетесь в ситуации, когда ваша программа занимает слишком много времени, и даже тогда вы должны использовать профилировщик, чтобы выяснить, что занимает больше времени, чем беспокоиться об этом вещи впереди времени.