93 подписчика
Монитор воздуха.
Сегодня посвятил весь день оптимизации кода.
Результаты:
Было:
Скетч использует 71462 байт (23%) памяти устройства. Всего доступно 253952 байт.
Глобальные переменные используют 1397 байт (42%) динамической памяти, оставляя 6795 байт для локальных переменных. Максимум: 8192 байт.
freeMemory()=3664 - это свободная память в байтах после загрузки программы (вывод в COM порт).
Стало:
Скетч использует 71462 байт (28%) памяти устройства. Всего доступно 253952 байт.
Глобальные переменные используют 1397 байт (17%) динамической памяти, оставляя 6795 байт для локальных переменных. Максимум: 8192 байт.
freeMemory()=5228
Пока программа насчитывает 3379 строк.
Из хороших новостей: почти допилил экран настройки дисплея. Осталось одна мелочь - выключение и включение по времени.
P.S Проблема по большей части была не в нехватке памяти, а в её фрагментации. Как писал в прошлом посте - у меня по нажатию вызывалась куча мелких функций. Объединение части из них в одну большую не дало уменьшение памяти, даже немного наоборот. Но судя по промежуточным результатам, фрагментация либо уменьшилась либо совсем исчезла. Во всяком случае контроллер перестал глючить после объединения мелочи в одну большую функцию. При этом я сделал это до того как освободил память. Мелкие функции в формате - каждая делает что-то своё, делают код более понятным, но по всей видимости могут приводить к фрагментации памяти.
1 минута
5 декабря 2023