как видеть оптимизированный код в c

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

Я могу получить результат оптимизации. Но у меня есть эти вопросы,

  • Как получить оптимизированный код C.
  • Какой алгоритм или метод, используемый C для оптимизации кода.

Заранее спасибо.

9
задан Quinn Taylor 6 March 2010 в 05:42
поделиться

5 ответов

вы можете получить представление об оптимизации, используя параметр -fdump-tree- оптимизирован с помощью gcc. , и вы получите оптимизированный файл. вы не можете запустить код, но используя его, вы можете получить представление об оптимизации. не забудьте включить -O2 или -O3 или какой-либо другой уровень.

12
ответ дан 4 December 2019 в 07:23
поделиться

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

9
ответ дан 4 December 2019 в 07:23
поделиться

Компилятор C обычно не создает оптимизированный C ни на одном этапе. Скорее, компилятор превращает C в упрощенное внутреннее представление, и большая часть оптимизаций компилятора будет сделана на одном или нескольких из этих промежуточных представлений . Затем компилятор генерирует из него сборку или двоичный файл.

Самое близкое, что вы можете сделать, это, вероятно, скомпилировать файл в сборку без оптимизации и снова с максимальной оптимизацией, а затем сравнить результат сборки. Для этого вам нужно хорошо владеть языком ассемблера. Если вы используете gcc , прочтите о переключателях -S и -O, чтобы узнать, как это делать (или не делать).

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

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

8
ответ дан 4 December 2019 в 07:23
поделиться

Если вы разбираетесь в ассемблере, вы можете проверить сгенерированный компилятором код.

-2
ответ дан 4 December 2019 в 07:23
поделиться

Если вы используете GCC, используйте аргумент для оптимизации кода и используйте --save-temps в качестве аргумента. Все, что говорят, что код C не оптимизирован, поскольку C при компиляции с помощью GCC, в какой-то мере ошибаются. Напишите рекурсивный генератор последовательности Фибоначчи на C и прочитайте предварительно обработанный код. Вышеупомянутый аргумент также сохраняет созданную сборку в каталоге, из которого вызывается GCC. Если вам удобнее использовать сборку синтаксиса Intel, также используйте -masm = intel в качестве аргумента.

3
ответ дан 4 December 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: