FLProg
Вход на сайт
Логин:
Пароль:
Поиск
Мы в VK
...
Статистика
Воскресенье, 23.04.2017, 20:44
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » Функциональные блоки и размер занимаемой ими памяти? (Оптимизация размера создаваемых проектов...)
Функциональные блоки и размер занимаемой ими памяти?
DWD Дата: Вторник, 19.01.2016, 19:44 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 289
Награды: 12
Репутация: 5
Статус: Offline
Кто нибудь заморачивался вопросом, сколько байт в памяти занимает тот или иной функциональный блок рисуемой программы?

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

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

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


 
Max Дата: Вторник, 19.01.2016, 20:44 | Сообщение # 2
Гуру
Группа: Проверенные
Сообщений: 583
Награды: 15
Репутация: 4
Статус: Offline
Уже проскакивала такая тема. Автору было предложение сделать в программе расчет оставшейся памяти в зависимости от проекта... Но, кануло все в Лету....
 
DWD Дата: Среда, 20.01.2016, 12:26 | Сообщение # 3
Подполковник
Группа: Проверенные
Сообщений: 289
Награды: 12
Репутация: 5
Статус: Offline
А выводы какие-то были сделаны и почему кануло?
Ссылочку не помните? Или ключевые слова для поиска...


 
support Дата: Среда, 20.01.2016, 14:13 | Сообщение # 4
Автор программы
Группа: Администраторы
Сообщений: 777
Награды: 36
Репутация: 25
Статус: Offline
Пока это сделать не возможно. Единственная возможность, в свойствах проекта поставить галочку "Компилировать при  проверке". Тогда нажав кнопку "Проверить" Вы получите отчёт по занимаемой памяти.



Разработчик программы FLProg
 
DWD Дата: Среда, 20.01.2016, 22:12 | Сообщение # 5
Подполковник
Группа: Проверенные
Сообщений: 289
Награды: 12
Репутация: 5
Статус: Offline
Я имел в виду совсем другое. И не просил сделать такой подсчёт в самой программе.
Чисто опытным путём определить, в каком случае размер программы меньше.

Вот, наприер, нужно будет попробовать сравнить занимаемый объём при соединении между собой двух блоков линией и посредством переменной...


 
Kocтик Дата: Среда, 20.01.2016, 23:17 | Сообщение # 6
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 2
Репутация: 0
Статус: Offline
Цитата support ()
Пока это сделать не возможно
Я, почему то думал что каждый определённый блок занимает определённый объём памяти.
 
support Дата: Четверг, 21.01.2016, 06:51 | Сообщение # 7
Автор программы
Группа: Администраторы
Сообщений: 777
Награды: 36
Репутация: 25
Статус: Offline
Цитата Kocтик ()
Я, почему то думал что каждый определённый блок занимает определённый объём памяти.
Не совсем так.  Дело в том что FLprog компилирует свой проект в код на С. Причем все блоки настраиваемые, соответственно код на С при разных настройках получается разный. Затем код на С компилируется в hex файл при помощи компилятора от ArduinoIDE. Там есть свой оптимизатор и т.д. И только после получения hex файла можно понять сколько проект займёт памяти в контроллере.


Разработчик программы FLProg
 
Chaynik Дата: Четверг, 21.01.2016, 18:25 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 93
Награды: 0
Репутация: 2
Статус: Offline
Цитата DWD ()
Предлагаю делиться опытом в этом плане. А имея что-то типа базы по размерам занимаемой блоками памяти можно будет создавать более оптимальные по размеру проекты.

Вот значит что заметил я smile

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


Компилируем проект:


Получаем скетч размером 1116 байт.

Создаём ещё один проект, но в настройках кнопки отключаем "защиту от дребезга",
а будем использовать блок "Bounce" - что по сути одно и тоже.


Компилируем проект:


Получаем скетч размером 1096 байт.
Т.е. с блоком, размер скетча на 20 байт меньше.
Конечно это не так много, но вдруг кому-нибудь, этих 20 байт не будет хватать wink
Прикрепления: 9173824.jpg(64Kb) · 6135271.jpg(80Kb) · 7994838.jpg(59Kb) · 4232863.jpg(77Kb)
 
Kocтик Дата: Четверг, 21.01.2016, 19:46 | Сообщение # 9
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 2
Репутация: 0
Статус: Offline
Цитата support ()
FLprog компилирует свой проект в код на С
Значит, если взять сторонний компилятор то можно без труда программировать любой МК? Единственное неудобство программатор.
 
krom23 Дата: Четверг, 21.01.2016, 20:22 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 206
Награды: 2
Репутация: 0
Статус: Offline
Да, ещё не стоит забывать, что компилятор трассирует блоки исходя из наличия ближайших свободных вентилей и их более рационального размещения, а отсюда следует, что один и тот-же блок в разных программах будет хоть немного, но отличаться по "массе" от аналогичных. Может я не прав?
 
alverzilin Дата: Четверг, 06.04.2017, 17:44 | Сообщение # 11
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Я вообще заметил, что скетч по своему "составу", после флпрог, сильно отличается от рукописных, но это понятно. программа... автоматизация.. и всё такое... но моим не опытным глазом, кажется что там много "лишнего"... Подскажите, это я лузер и это норма или только я на это обратил внимание?)


 
Boroda Дата: Пятница, 07.04.2017, 01:46 | Сообщение # 12
Генерал-лейтенант
Группа: Проверенные
Сообщений: 764
Награды: 35
Репутация: 34
Статус: Offline
alverzilin, это особенность алгоритма FLProg. Если стоит длинная цепочка логики и в конце инее висят две переменные, то для каждой переменной эта цепочка просчитывается отдельно. Но думаю, что Ардуино ИДЕ потом все оптимизирует. Уже пару раз сталкивался с оптимизацией IDE:
1.
if ((X)and(Y)) {Z;}
if (X) {W;}

2.
if (X)
{
  if (Y) {Z;}
  W;
}
Первый вариант занимал меньше памяти. biggrin
 
alverzilin Дата: Пятница, 07.04.2017, 16:52 | Сообщение # 13
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Цитата Boroda ()
ИДЕ потом все оптимизирует
Это пример оптимизации? В первом варианте она?



 
Boroda Дата: Пятница, 07.04.2017, 16:58 | Сообщение # 14
Генерал-лейтенант
Группа: Проверенные
Сообщений: 764
Награды: 35
Репутация: 34
Статус: Offline
alverzilin, это строчки из пользовательского блока.
Попросили оптимизировать.

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

В итоге объем кода вырос. Хотя в 1 случае три сравнения, а во втором только 2. Как компилятор работает - хз.
 
alverzilin Дата: Пятница, 07.04.2017, 23:23 | Сообщение # 15
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Цитата Boroda ()
Как компилятор работает - хз.
Магия...)) Короче, можно не парится, что между флпрогом и закачкой в ардуино имеется аброкадабра?)



 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » Функциональные блоки и размер занимаемой ими памяти? (Оптимизация размера создаваемых проектов...)
Страница 1 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика