Оптимизирует ли GCC пустые вызовы методов? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Оптимизирует ли GCC пустые вызовы методов?

Сообщение Anonymous »

Следующий метод работает нормально, но мне интересно узнать о производительности и оптимизации.
Пример: я вызываю «Output(str)», чтобы отправить что-то на терминал. Я добавил метод, который выводит данные только при отладке, следующим образом. Теперь мне остается задаться вопросом, приведет ли это к бессмысленным пустым вызовам методов, когда НЕ отладка, и должен ли я действовать по-другому.

Код: Выделить всё

bool OutputNewline = true;
void Output(std::string str, bool newLine = true)
{
if (!OutputNewline)
{
putchar('\n');
OutputNewline = true;
}
if (str.length() == 0) { return; }
fputs(str.c_str(), stdout);
fflush(stdout);
OutputNewline = (str[str.length()-1] == '\n');
}
void OutputDebug(std::string str, bool newLine = true)
{
#if defined(DEBUG) && DEBUG == true
Output(str, newLine);
#endif
}
Какой способ просмотра/проверки скомпилированного выходного файла после компиляции будет наиболее подходящим, чтобы увидеть, какие методы/поля фактически оказались в скомпилированном выводе.
g++ 12.2.0
Debian GNU/Linux 12 (книжный червь)

Подробнее здесь: https://stackoverflow.com/questions/790 ... thod-calls

Вернуться в «C++»