Оптимизация в GCC

У меня есть два вопроса:

(1) Я где-то узнал, что -O3 не рекомендуется с GCC, потому что

Уровень оптимизации -O3 может увеличить скорость результирующего исполняемого файла, но также может увеличить его размер. При некоторых обстоятельствах, когда эти оптимизации не являются благоприятными, эта опция может на самом деле замедлить работу программы. на самом деле он не должен использоваться для всей системы с gcc 4.x. Поведение gcc значительно изменилось с версии 3.x. В 3.x было показано, что -O3 приводит к немного более быстрому времени выполнения по сравнению с -O2, но это больше не относится к gcc 4.x. Компиляция всех ваших пакетов с -O3 приведет к большим бинарным файлам, которые требуют больше памяти, и значительно увеличит шансы сбоя компиляции или неожиданного поведения программы (включая ошибки). Недостатки перевешивают выгоды; помните принцип убывающей отдачи. Использование -O3 не рекомендуется для gcc 4.x.

Предположим, у меня есть рабочая станция (Kubuntu9.04), которая имеет 128 ГБ памяти и 24 ядра и используется многими пользователями, некоторые из которых могут запускать интенсивные программы, использующие, например, 60 ГБ памяти. Является ли -O2 лучшим выбором для меня, чем -O3?

(2) Я также узнал, что когда неожиданно происходит сбой работающей программы, любая отладочная информация лучше, чем ничего, поэтому рекомендуется использовать -g для оптимизированных программ, как для разработки, так и для развертывания. Но при компиляции с -ggdb3 вместе с -O2 или -O3, это замедлит скорость выполнения? Предположим, я все еще использую ту же рабочую станцию.

Ответы на вопрос(6)

Ваш ответ на вопрос