ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
21 июля
1298402 Топик полностью
Nikolay_Po (04.04.2023 18:47, просмотров: 102) ответил IBAH на Целых 7 операций, вариант из пяти операций ((!!a)!=(!!b))
Это кто совершенно не пользуется оптимизацией? У мну GCC почти везде, максимально свежие из поддерживаемых средами и чипами. Всегда включаю LTO и оптимизацию "3" или "s". На практике выяснил, что лучше поймать глюки с максимальной оптимизацией быстро, чем поймать их без оптимизации неизвестно когда. 

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

К примеру, свежий OpenOCD собрать с оптимизацией -O3 и -Werror уже нельзя - несколько модулей имеют массу потенциально неинициализированных значений и даже вылеты за границы массива.


P.S. По сути ответа: уверен, что с максимальной оптимизацией, как ни пиши, код будет одинаково мал. И можно так, и можно сяк. Если побочный эффект от выполнения кода один и тот же, то и код будет, скорее всего, один и тот же. Важно избегать волатильных переменных. Часто экранирую сложную логику, переводя volatile-значение в не переменчивое временное, чтобы компилятор имел свободу на время вычислений не перечитывать значение по конкретному адресу.