-
- Ну, я о том же. Вы просто не застали - я из раза в раз повторяю:
"Хочешь писать качественный код - всегда включай полную оптимизацию
и LTO! Так больше шансов сразу увидеть баг в коде до того, как он
вылезет потом, по мере усложнения проекта". Нет у компилятора
чрезмерной оптимизации, если не включать флаги быстрой, но неточной
математики и ещё там по мелочи, по умолчанию выключенные. Зато есть
недостаточно тщательно проработанный код. Nikolay_Po(530 знак., 12.05.2023 00:27, ссылка)
- Бывает и проблема при использовании сторонних header-only
библиотек. Кажись, в ранней версии nuklear я на такой косяк при -О3
натыкался. Eddy_Em(187 знак., 12.05.2023 00:34)
- Нет, там по условиям портирования, в документации, функции этого
файла должны по указателю на функцию из прерывания таймера
вызываться. Просто человек, готовивший порт много лет назад, не
использовал оптимизацию в полной мере. И даже у меня в этот код
какое-то время, на начальном этапе, работал, а потом перестал. Стал
копать почему - и нашёл. - Nikolay_Po(12.05.2023 00:38)
- Думаю, тому разработчику STM8 или пики понравились бы: под них есть
только SDCC, а у этой заразы с оптимизацией совсем плохо... - Eddy_Em(12.05.2023 00:41)
- Ну, я для AVR использую AVR-GCC-12. С оптимизациями там порядок, я
так не соптимизирую. И косяки кода становятся явными. Так что
корректная работа кода в полной оптимизации, с LTO - один из
признаков качества. Nikolay_Po(1 знак., 12.05.2023 00:51, ссылка)
- Вот, только что решил таки проверить: а что будет, если собрать не
с -O2, а с -O3? Размер прошивки с 35кБ вырос аж до 44кБ!!! Вот так
мне gcc наоптимизировал (видимо, все, что только можно,
позаинлайнил). Eddy_Em(545 знак., 14.05.2023 12:17)
- По моему, debug, при использовании LTO, не имеет смысла. Разве что повезет, в массив какой заглянуть или конфигурацию регистров периферии глянуть. Остальное - практически без шансов. - Nikolay_Po(14.05.2023 13:18)
- Не только инлайнит, но и циклы разматывает. - SciFi(14.05.2023 12:19)
- Вот, только что решил таки проверить: а что будет, если собрать не
с -O2, а с -O3? Размер прошивки с 35кБ вырос аж до 44кБ!!! Вот так
мне gcc наоптимизировал (видимо, все, что только можно,
позаинлайнил). Eddy_Em(545 знак., 14.05.2023 12:17)
- Ну, я для AVR использую AVR-GCC-12. С оптимизациями там порядок, я
так не соптимизирую. И косяки кода становятся явными. Так что
корректная работа кода в полной оптимизации, с LTO - один из
признаков качества. Nikolay_Po(1 знак., 12.05.2023 00:51, ссылка)
- Думаю, тому разработчику STM8 или пики понравились бы: под них есть
только SDCC, а у этой заразы с оптимизацией совсем плохо... - Eddy_Em(12.05.2023 00:41)
- Нет, там по условиям портирования, в документации, функции этого
файла должны по указателю на функцию из прерывания таймера
вызываться. Просто человек, готовивший порт много лет назад, не
использовал оптимизацию в полной мере. И даже у меня в этот код
какое-то время, на начальном этапе, работал, а потом перестал. Стал
копать почему - и нашёл. - Nikolay_Po(12.05.2023 00:38)
- Бывает и проблема при использовании сторонних header-only
библиотек. Кажись, в ранней версии nuklear я на такой косяк при -О3
натыкался. Eddy_Em(187 знак., 12.05.2023 00:34)
- Ну, я о том же. Вы просто не застали - я из раза в раз повторяю:
"Хочешь писать качественный код - всегда включай полную оптимизацию
и LTO! Так больше шансов сразу увидеть баг в коде до того, как он
вылезет потом, по мере усложнения проекта". Нет у компилятора
чрезмерной оптимизации, если не включать флаги быстрой, но неточной
математики и ещё там по мелочи, по умолчанию выключенные. Зато есть
недостаточно тщательно проработанный код. Nikolay_Po(530 знак., 12.05.2023 00:27, ссылка)