Функциональные блоки и размер занимаемой ими памяти?
Функциональные блоки и размер занимаемой ими памяти?
Кто нибудь заморачивался вопросом, сколько байт в памяти занимает тот или иной функциональный блок рисуемой программы?
Пример.
Есть приличный уже по размеру проектик (22,96КБ) на UNO.
В одном месте получилось так, что стоят два блока дисплея но на каждый выводится часть общей информации. Решил объединить всё в одном блоке дисплея, а выводимую информацию скомпоновал блоком сложения строк, который и так уже был. Добавил только ему ещё один вход. После компиляции размер проги получился 22,838КБ. То есть, на 122 байта меньше!
Если грубо, то получается, что блок дисплея занимает в памяти примерно 122 байта.
А у меня в создаваемом проекте аж 15 таких блоков дисплея. Почти 1,8КБ памяти занимает только дисплей...
Теперь вот думаю, может перекомпоновать проект так, что бы дисплей был один, а выводимая на него информация формировалась блоками сложения и переключателями?
Глядишь - и места на 1КБ станет больше.
А то уже 70% памяти занято, а есть ещё куча задумок по расширению функционала создаваемого проектика и боюсь, что места не хватит...
Предлагаю делиться опытом в этом плане. А имея что-то типа базы по размерам занимаемой блоками памяти можно будет создавать более оптимальные по размеру проекты.
Пример.
Есть приличный уже по размеру проектик (22,96КБ) на UNO.
В одном месте получилось так, что стоят два блока дисплея но на каждый выводится часть общей информации. Решил объединить всё в одном блоке дисплея, а выводимую информацию скомпоновал блоком сложения строк, который и так уже был. Добавил только ему ещё один вход. После компиляции размер проги получился 22,838КБ. То есть, на 122 байта меньше!
Если грубо, то получается, что блок дисплея занимает в памяти примерно 122 байта.
А у меня в создаваемом проекте аж 15 таких блоков дисплея. Почти 1,8КБ памяти занимает только дисплей...
Теперь вот думаю, может перекомпоновать проект так, что бы дисплей был один, а выводимая на него информация формировалась блоками сложения и переключателями?
Глядишь - и места на 1КБ станет больше.
А то уже 70% памяти занято, а есть ещё куча задумок по расширению функционала создаваемого проектика и боюсь, что места не хватит...
Предлагаю делиться опытом в этом плане. А имея что-то типа базы по размерам занимаемой блоками памяти можно будет создавать более оптимальные по размеру проекты.
Функциональные блоки и размер занимаемой ими памяти?
Уже проскакивала такая тема. Автору было предложение сделать в программе расчет оставшейся памяти в зависимости от проекта... Но, кануло все в Лету....
Функциональные блоки и размер занимаемой ими памяти?
А выводы какие-то были сделаны и почему кануло?
Ссылочку не помните? Или ключевые слова для поиска...
Ссылочку не помните? Или ключевые слова для поиска...
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Функциональные блоки и размер занимаемой ими памяти?
Пока это сделать не возможно. Единственная возможность, в свойствах проекта поставить галочку "Компилировать при проверке". Тогда нажав кнопку "Проверить" Вы получите отчёт по занимаемой памяти.


Автор программы FLProg.
Функциональные блоки и размер занимаемой ими памяти?
Я имел в виду совсем другое. И не просил сделать такой подсчёт в самой программе.
Чисто опытным путём определить, в каком случае размер программы меньше.
Вот, наприер, нужно будет попробовать сравнить занимаемый объём при соединении между собой двух блоков линией и посредством переменной...
Чисто опытным путём определить, в каком случае размер программы меньше.
Вот, наприер, нужно будет попробовать сравнить занимаемый объём при соединении между собой двух блоков линией и посредством переменной...
Функциональные блоки и размер занимаемой ими памяти?
Я, почему то думал что каждый определённый блок занимает определённый объём памяти.support писал(а):Пока это сделать не возможно
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Функциональные блоки и размер занимаемой ими памяти?
Не совсем так. Дело в том что FLprog компилирует свой проект в код на С. Причем все блоки настраиваемые, соответственно код на С при разных настройках получается разный. Затем код на С компилируется в hex файл при помощи компилятора от ArduinoIDE. Там есть свой оптимизатор и т.д. И только после получения hex файла можно понять сколько проект займёт памяти в контроллере.Kocтик писал(а):Я, почему то думал что каждый определённый блок занимает определённый объём памяти.
Автор программы FLProg.
Функциональные блоки и размер занимаемой ими памяти?
Вот значит что заметил яDWD писал(а):Предлагаю делиться опытом в этом плане. А имея что-то типа базы по размерам занимаемой блоками памяти можно будет создавать более оптимальные по размеру проекты.

К примеру, создаём простой проект из кнопки и светодиода.
В настройках кнопки включаем "подтягивающий резистор" и защиту от дребезга. Компилируем проект: Получаем скетч размером 1116 байт.
Создаём ещё один проект, но в настройках кнопки отключаем "защиту от дребезга",
а будем использовать блок "Bounce" - что по сути одно и тоже. Компилируем проект: Получаем скетч размером 1096 байт.
Т.е. с блоком, размер скетча на 20 байт меньше.
Конечно это не так много, но вдруг кому-нибудь, этих 20 байт не будет хватать

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Функциональные блоки и размер занимаемой ими памяти?
Значит, если взять сторонний компилятор то можно без труда программировать любой МК? Единственное неудобство программатор.support писал(а):FLprog компилирует свой проект в код на С
Функциональные блоки и размер занимаемой ими памяти?
Да, ещё не стоит забывать, что компилятор трассирует блоки исходя из наличия ближайших свободных вентилей и их более рационального размещения, а отсюда следует, что один и тот-же блок в разных программах будет хоть немного, но отличаться по "массе" от аналогичных. Может я не прав?
- alverzilin
- Рядовой
- Сообщения: 72
- Зарегистрирован: 15 сен 2016, 00:33
- Откуда: Zlobin.BY
Функциональные блоки и размер занимаемой ими памяти?
Я вообще заметил, что скетч по своему "составу", после флпрог, сильно отличается от рукописных, но это понятно. программа... автоматизация.. и всё такое... но моим не опытным глазом, кажется что там много "лишнего"... Подскажите, это я лузер и это норма или только я на это обратил внимание?)
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Функциональные блоки и размер занимаемой ими памяти?
alverzilin, это особенность алгоритма FLProg. Если стоит длинная цепочка логики и в конце инее висят две переменные, то для каждой переменной эта цепочка просчитывается отдельно. Но думаю, что Ардуино ИДЕ потом все оптимизирует. Уже пару раз сталкивался с оптимизацией IDE:
1.
if ((X)and(Y)) {Z;}
if (X) {W;}
2.
if (X)
{
if (Y) {Z;}
W;
}
Первый вариант занимал меньше памяти.
1.
if ((X)and(Y)) {Z;}
if (X) {W;}
2.
if (X)
{
if (Y) {Z;}
W;
}
Первый вариант занимал меньше памяти.
- alverzilin
- Рядовой
- Сообщения: 72
- Зарегистрирован: 15 сен 2016, 00:33
- Откуда: Zlobin.BY
Функциональные блоки и размер занимаемой ими памяти?
Это пример оптимизации? В первом варианте она?Boroda писал(а):ИДЕ потом все оптимизирует
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Функциональные блоки и размер занимаемой ими памяти?
alverzilin, это строчки из пользовательского блока.
Попросили оптимизировать.
Первый вариант - то, что было у автора блока.
Второй вериант переписал я.
В итоге объем кода вырос. Хотя в 1 случае три сравнения, а во втором только 2. Как компилятор работает - хз.
Попросили оптимизировать.
Первый вариант - то, что было у автора блока.
Второй вериант переписал я.
В итоге объем кода вырос. Хотя в 1 случае три сравнения, а во втором только 2. Как компилятор работает - хз.
- alverzilin
- Рядовой
- Сообщения: 72
- Зарегистрирован: 15 сен 2016, 00:33
- Откуда: Zlobin.BY
Функциональные блоки и размер занимаемой ими памяти?
Магия...)) Короче, можно не парится, что между флпрогом и закачкой в ардуино имеется аброкадабра?)Boroda писал(а):Как компилятор работает - хз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей