Накладные расходы в неиспользованном коде

Мне интересно, какие накладные расходы связаны с наличием неиспользуемых функций в вашем коде.

Скажите например, у вас есть ведение журнала отладки, а затем вы передаете большинству своих объектов функцию ToString (), которая используется в журналах отладки.

В сборке выпуска это ведение журнала отладки не используется. Стоит ли тогда удалять исходный код этих функций ToString ()? (например, через макрос?)

Или они просто увеличивают размер исполняемого файла и в противном случае не влияют на производительность? например нет влияния скорости? Или компилятор или компоновщик, возможно, даже удаляют функции, если они не используются? Если компилятор или компоновщик не удаляют код, что, если бы функции ToString () были определены встроенными? Предположительно он попытается встроить код, и, поскольку функция никогда не вызывается, она исчезнет?

Я полагаю, что каждая функция должна быть сохранена в статической библиотеке, но после компиляции в исполняемый файл наверняка много всего будет просто игнорируется компоновщиком?

В другом примечании, которое примерно аналогично, если компилятор решает не встраивать встроенную функцию, так что встроенная функция определяется как функция в нескольких единицах компиляции, будет ли компоновщик отбрасывать лишние определения и связывать только одно из них в конце?

Спасибо

12
задан Cookie 26 May 2011 в 11:10
поделиться