Это нормально, что std::println раздувает мой двоичный файл? Это нормально, что двоичный файл -O0 короче, чем -03?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Это нормально, что std::println раздувает мой двоичный файл? Это нормально, что двоичный файл -O0 короче, чем -03?

Сообщение Anonymous »

Я играл на https://godbolt.org/ и хотел проверить, какая сборка создается при использовании std::println...

Я был удивлен, что только для этой действительно простой программы (скомпилированной для x86_64):

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

#include

auto main() -> int {
std::println("Hello World");
return 0;
}

Двоичный файл, сгенерированный GCC (15.2, Trunk) и clang (21.1), похож на более чем 5000 строк ассемблера....

оптимизатор не может помочь. Будет ли он скомпилирован с -O0 или -O3, результат будет примерно одинаковым....
При использовании iostream:

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

#include 

auto main() -> int {
std::cout  Я получаю двоичный файл из ~15 строк ассемблера с -O0.
Я нахожу все это действительно запутанным...

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

А когда println генерирует 5000 строк ассемблера, это кажется слишком сложным.

На самом деле мне интересно, можно ли вообще использовать println....
Я знаю, что это похоже на 2 вопроса в одном посте, но все это меня очень смутило....
Заранее спасибо 

Подробнее здесь: [url]https://stackoverflow.com/questions/79893456/is-it-normal-that-stdprintln-bloats-my-binary-is-it-normal-that-o0-binary-i[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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