ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
846022 Топик полностью
Экспериментатор (05.06.2018 12:14, просмотров: 1) ответил SciFi на Вообще-то, чтобы "короче", надо -Os. А вот эти -O123 - это для скорости. Скажем, разматывание цикла может добавить кода огого.
Заглянул в документацию: "-O2 turns on all optional optimizations except for loop unrolling (-funroll-loops), function inlining (-finline-functions), and strict aliasing optimizations (-fstrict-aliasing). It also turns on Frame Pointer elimination (-fomit-frame-pointer). As compared to -O, this option increases both compilation time and the performance of the generated code." Соответственно, циклы должно начинать разматывать на -O3. В моем случае были виноваты inline вставки для прерываний, которые на -O1 не прилинковываются, как было задумано. Кстати, на -Os - тоже. Проблему решает сборка проекта с идивидуальными опциями для каждого модуля. Раньше об этом не задумывался, так как стремился использовать в нужных местах макросы. Кстати, код с ними все-равно примерно на 3% меньше наилучшего достигнутого результата с inline.