Функциональные блоки и размер занимаемой ими памяти?

Вопросы по использованию встроенных в программу блоков
Ответить
DWD
Лейтенант
Сообщения: 353
Зарегистрирован: 18 окт 2015, 13:51
Откуда: Кривой Рог

Функциональные блоки и размер занимаемой ими памяти?

Сообщение DWD »

Кто нибудь заморачивался вопросом, сколько байт в памяти занимает тот или иной функциональный блок рисуемой программы?

Пример.
Есть приличный уже по размеру проектик (22,96КБ) на UNO.
В одном месте получилось так, что стоят два блока дисплея но на каждый выводится часть общей информации. Решил объединить всё в одном блоке дисплея, а выводимую информацию скомпоновал блоком сложения строк, который и так уже был. Добавил только ему ещё один вход. После компиляции размер проги получился 22,838КБ. То есть, на 122 байта меньше!

Если грубо, то получается, что блок дисплея занимает в памяти примерно 122 байта.
А у меня в создаваемом проекте аж 15 таких блоков дисплея. Почти 1,8КБ памяти занимает только дисплей...
Теперь вот думаю, может перекомпоновать проект так, что бы дисплей был один, а выводимая на него информация формировалась блоками сложения и переключателями?
Глядишь - и места на 1КБ станет больше.
А то уже 70% памяти занято, а есть ещё куча задумок по расширению функционала создаваемого проектика и боюсь, что места не хватит...

Предлагаю делиться опытом в этом плане. А имея что-то типа базы по размерам занимаемой блоками памяти можно будет создавать более оптимальные по размеру проекты.
Изображение
Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06 сен 2015, 13:12
Откуда: Тюмень-Баку
Имя: Максим

Функциональные блоки и размер занимаемой ими памяти?

Сообщение Max »

Уже проскакивала такая тема. Автору было предложение сделать в программе расчет оставшейся памяти в зависимости от проекта... Но, кануло все в Лету....
DWD
Лейтенант
Сообщения: 353
Зарегистрирован: 18 окт 2015, 13:51
Откуда: Кривой Рог

Функциональные блоки и размер занимаемой ими памяти?

Сообщение DWD »

А выводы какие-то были сделаны и почему кануло?
Ссылочку не помните? Или ключевые слова для поиска...
Изображение
Аватара пользователя
support
Супермодератор
Сообщения: 1917
Зарегистрирован: 03 янв 2018, 11:45
Откуда: Астрахань
Имя: Сергей
Поблагодарили: 23 раза
Контактная информация:

Функциональные блоки и размер занимаемой ими памяти?

Сообщение support »

Пока это сделать не возможно. Единственная возможность, в свойствах проекта поставить галочку "Компилировать при  проверке". Тогда нажав кнопку "Проверить" Вы получите отчёт по занимаемой памяти.

Изображение
Автор программы FLProg.
DWD
Лейтенант
Сообщения: 353
Зарегистрирован: 18 окт 2015, 13:51
Откуда: Кривой Рог

Функциональные блоки и размер занимаемой ими памяти?

Сообщение DWD »

Я имел в виду совсем другое. И не просил сделать такой подсчёт в самой программе.
Чисто опытным путём определить, в каком случае размер программы меньше.

Вот, наприер, нужно будет попробовать сравнить занимаемый объём при соединении между собой двух блоков линией и посредством переменной...
Изображение
Аватара пользователя
Kocтик
Рядовой
Сообщения: 75
Зарегистрирован: 07 сен 2015, 23:51

Функциональные блоки и размер занимаемой ими памяти?

Сообщение Kocтик »

support писал(а):Пока это сделать не возможно
Я, почему то думал что каждый определённый блок занимает определённый объём памяти.
Аватара пользователя
support
Супермодератор
Сообщения: 1917
Зарегистрирован: 03 янв 2018, 11:45
Откуда: Астрахань
Имя: Сергей
Поблагодарили: 23 раза
Контактная информация:

Функциональные блоки и размер занимаемой ими памяти?

Сообщение support »

Kocтик писал(а):Я, почему то думал что каждый определённый блок занимает определённый объём памяти.
Не совсем так.  Дело в том что FLprog компилирует свой проект в код на С. Причем все блоки настраиваемые, соответственно код на С при разных настройках получается разный. Затем код на С компилируется в hex файл при помощи компилятора от ArduinoIDE. Там есть свой оптимизатор и т.д. И только после получения hex файла можно понять сколько проект займёт памяти в контроллере.
Автор программы FLProg.
Аватара пользователя
Chaynik
Рядовой
Сообщения: 92
Зарегистрирован: 15 ноя 2015, 18:26

Функциональные блоки и размер занимаемой ими памяти?

Сообщение Chaynik »

DWD писал(а):Предлагаю делиться опытом в этом плане. А имея что-то типа базы по размерам занимаемой блоками памяти можно будет создавать более оптимальные по размеру проекты.
Вот значит что заметил я Изображение

К примеру, создаём простой проект из кнопки и светодиода.
В настройках кнопки включаем "подтягивающий резистор" и защиту от дребезга.
9173824.jpg
Компилируем проект:
6135271.jpg
Получаем скетч размером 1116 байт.

Создаём ещё один проект, но в настройках кнопки отключаем "защиту от дребезга",
а будем использовать блок "Bounce" - что по сути одно и тоже.
7994838.jpg
Компилируем проект:
4232863.jpg
Получаем скетч размером 1096 байт.
Т.е. с блоком, размер скетча на 20 байт меньше.
Конечно это не так много, но вдруг кому-нибудь, этих 20 байт не будет хватать Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Kocтик
Рядовой
Сообщения: 75
Зарегистрирован: 07 сен 2015, 23:51

Функциональные блоки и размер занимаемой ими памяти?

Сообщение Kocтик »

support писал(а):FLprog компилирует свой проект в код на С
Значит, если взять сторонний компилятор то можно без труда программировать любой МК? Единственное неудобство программатор.
krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06 сен 2015, 15:18
Откуда: Калуга
Имя: Андрей

Функциональные блоки и размер занимаемой ими памяти?

Сообщение krom23 »

Да, ещё не стоит забывать, что компилятор трассирует блоки исходя из наличия ближайших свободных вентилей и их более рационального размещения, а отсюда следует, что один и тот-же блок в разных программах будет хоть немного, но отличаться по "массе" от аналогичных. Может я не прав?
Аватара пользователя
alverzilin
Рядовой
Сообщения: 72
Зарегистрирован: 15 сен 2016, 00:33
Откуда: Zlobin.BY

Функциональные блоки и размер занимаемой ими памяти?

Сообщение alverzilin »

Я вообще заметил, что скетч по своему "составу", после флпрог, сильно отличается от рукописных, но это понятно. программа... автоматизация.. и всё такое... но моим не опытным глазом, кажется что там много "лишнего"... Подскажите, это я лузер и это норма или только я на это обратил внимание?)
Изображение
Изображение
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

Функциональные блоки и размер занимаемой ими памяти?

Сообщение Boroda »

alverzilin, это особенность алгоритма FLProg. Если стоит длинная цепочка логики и в конце инее висят две переменные, то для каждой переменной эта цепочка просчитывается отдельно. Но думаю, что Ардуино ИДЕ потом все оптимизирует. Уже пару раз сталкивался с оптимизацией IDE:
1.
if ((X)and(Y)) {Z;}
if (X) {W;}

2.
if (X)
{
  if (Y) {Z;}
  W;
}
Первый вариант занимал меньше памяти.
Аватара пользователя
alverzilin
Рядовой
Сообщения: 72
Зарегистрирован: 15 сен 2016, 00:33
Откуда: Zlobin.BY

Функциональные блоки и размер занимаемой ими памяти?

Сообщение alverzilin »

Boroda писал(а):ИДЕ потом все оптимизирует
Это пример оптимизации? В первом варианте она?
Изображение
Изображение
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

Функциональные блоки и размер занимаемой ими памяти?

Сообщение Boroda »

alverzilin, это строчки из пользовательского блока.
Попросили оптимизировать.

Первый вариант - то, что было у автора блока.
Второй вериант переписал я.

В итоге объем кода вырос. Хотя в 1 случае три сравнения, а во втором только 2. Как компилятор работает - хз.
Аватара пользователя
alverzilin
Рядовой
Сообщения: 72
Зарегистрирован: 15 сен 2016, 00:33
Откуда: Zlobin.BY

Функциональные блоки и размер занимаемой ими памяти?

Сообщение alverzilin »

Boroda писал(а):Как компилятор работает - хз.
Магия...)) Короче, можно не парится, что между флпрогом и закачкой в ардуино имеется аброкадабра?)
Изображение
Изображение
Ответить

Вернуться в «Встроенные блоки»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя