Программа, скомпилированная с флагом -g в gcc, работает медленнее, чем та же программа, скомпилированная без -g?
У меня есть программа, которую я компилирую с флагом -O3 для повышения производительности и -g для добавления отладочных символов (в случае сбоя я могу использовать дамп памяти). Однако меня сильно беспокоит один аспект: существует ли производственный штраф из-за использования флага -g?
Когда я сравниваю выходные данные компиляции с флагом -g и без него, я замечаю, что выходные данные без -g на 80% меньше, чем с -g. Если дополнительное пространство уходит на отладочные символы, меня это не слишком волнует, так как эта часть, как я полагаю, не используется во время выполнения. Однако если каждая инструкция в выходных данных без -g требует выполнения 4 дополнительных инструкций в выходных данных с -g, я бы без колебаний отказался бы от использования флага -g, даже с ценой невозможности обработки дампов памяти.
Как можно узнать размер секции отладочных символов внутри программы? И в целом, ведет ли компиляция с флагом -g к созданию программы, которая работает медленнее по сравнению с идентичным кодом, скомпилированным без флага -g?
В чём разница между g++ и gcc?
Как сравнить float и double, учитывая потерю точности?
Как вывести список символов из .so файла?
Неопределенная ссылка на виртуальную таблицу (vtable)
Почему GCC вызывает sqrt() из libc, не используя его результат?