2012-01-14 1 views
-1

У меня вопрос в одном из моих тестов, который попросил меня ответить на то, что оператор switch производит наименее эффективный машинный код. Возможными ответами были O4, O1, O2 или O3. Я не знаю, что они означают.Какой оператор switch производит наименее эффективный машинный код?

+2

Зависит от компилятора и языка? Нужен контекст – Deco

+4

Прошу прощения, я думаю, вы неправильно поняли этот вопрос (возможно, не о операторах switch, а о компиляторах), и ваш вопрос здесь совершенно неопровержимый as-is - контекст, код, язык, который отсутствует. – Mat

+0

@Deco Не было никакого контекста. В этом весь вопрос. –

ответ

2

НКУ Options That Control Optimization

-O -O1 Оптимизировать. Оптимизация компиляции занимает несколько больше времени, а для большой функции - намного больше памяти.

-O2 Оптимизируйте еще больше. GCC выполняет почти все поддерживаемые оптимизации, которые не связаны с компрометацией космической скорости. По сравнению с -O, этот параметр увеличивает как время компиляции, так и производительность сгенерированного кода.

-O3 Оптимизировать еще более

-Os Оптимизировать по размеру.

-Ofast Пренебрежение соблюдением строгих стандартов. -Ofast позволяет оптимизировать все -O3. Он также позволяет оптимизировать, которые недействительны для всех стандартных совместимых программ.

+0

Я думаю, что номера опций в gcc по модулю три, поэтому -O4 действительно -O0. Довольно легко проверить ... –