На этот вопрос есть простой ответ, который я впервые услышал в дискуссии о рефлексии: «если вам нужно спросить, вы не можете себе этого позволить».
В принципе, если вам требуется ToString () для больших объектов в повседневной работе вашей программы, то ваша программа просто сумасшедшая. Даже если вам нужно ToString () целое число для чего-то критичного по времени, ваша программа сумасшедшая, потому что она, очевидно, использует строку, в которой было бы целое число.
ToString () для сообщений журнала автоматически в порядке, потому что ведение журнала уже дорого. Если ваша программа работает слишком медленно, уменьшите уровень журнала! На самом деле не имеет значения, насколько медленно на самом деле генерируются сообщения отладки, если вы можете не генерировать их. (Примечание: ваша инфраструктура журналирования должна вызывать саму ToString (), и только тогда, когда предполагается, что сообщение журнала должно быть напечатано. Не выполняйте ToString () вручную, по пути в инфраструктуру журнала, Вы заплатите цену, даже если уровень журнала низкий, и вы все равно его не распечатаете! Подробнее об этом см. http://www.colijn.ca/~caffeine/?m=200708#16.)