ВРЕМЯ ЦИКЛА или что убивает ваш проект.

GDAN7777
Сержант
Сообщения: 147
Зарегистрирован: 15.04.2020{, 06:19}
Репутация: 22
Имя: Vital

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#21

Сообщение GDAN7777 » 15.09.2021{, 20:22}

Dryundel писал(а):
15.09.2021{, 17:52}
Моя ESP-еха передает тебе привет. Она тупо подавилась.
Отлично.Сколько памяти занято в данном примере?

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#22

Сообщение Dryundel » 15.09.2021{, 20:52}

rw6cm писал(а):
15.09.2021{, 19:44}
Понятно что логика вашего блока работает не в каждом цикле, и сравнивать с штатным который грузит каждый цикл не серьезно.
Немного не правильно. LCD_V2.18 не пропускает ни одного цикла. Логика построена на изменении входных данных и если данные не изменились, то и переписывать их незачем. Плюс в блоке отсутствует функция clear(), что тоже сказывается на скорость, т.к. данная функция одна из самых время-емких (не знаю как это будет по русски).
rw6cm писал(а):
15.09.2021{, 19:44}
Если делать тест, то надо ставить работу блоков в одинаковых условиях.
Допустим esp делает377000 циклов в сек без дисплея.
Сделаем обращение к дисплею через каждые 32000 циклов.
Получим 11 раз за сек обновление информации на дисплее. И сравним сколько циклов затратит каждый блок
А вот это как раз не равные условия, а жульничество. Никто в скетче (проекте) не запускает обращение через каждые 32000 циклов.
И речь идет о:
Dryundel писал(а):
14.09.2021{, 17:23}
Логически рассуждая, приходим к выводу, что усредненная длительность цикла равна времени выполнения поделенному на количество циклов за это время.
Если на прямую сравнивать время одного конкретного цикла работы блоков, то да, скорость обработки данных отличается не сильно примерно раза в полтора всего. Однако в следующих 1000-1500 циклов блок LCD_V2.18 не мешает работе другой логики, что не скажешь о штатном.
Да, соглашусь что:
rw6cm писал(а):
15.09.2021{, 19:44}
Глупо гонять дисплеи в каждом цикле. Достаточно не чаще 3 раз в сек выделить ему по одному циклу.
Но и об этом я упоминал косвенно:
Dryundel писал(а):
14.09.2021{, 17:22}
Конечно у пользователей FLProg есть альтернатива в данном случае. Ну например использовать наработки ecoins. Однако мучить себя изучением сего монументального труда, не каждый может себе позволить.
Один из вариантов вашего предложения.
Лично мне эти моменты понятны и построить какую никакую логику пропуска циклов смогу.
Но вы, господа МЭТРЫ, все время пытаетесь найти червоточину и забываете читать все строки.
Было же сказано:
Dryundel писал(а):
14.09.2021{, 17:22}
Данная статья посвящена в основном новичкам.
Не все примеры, с точки зрения программирования, являются корректными.
Dryundel писал(а):
15.09.2021{, 11:01}
И хотя данный метод является не вполне корректным, представление об общей картине он дает.
Что же вы еще хотите?
Могу на пупе крутануться. :)
Требуется признание того, что LCD_V2.18 не совершенен? Так я этого и не утверждал.
.
НО ПРОСТОЙ, ДОСТУПНОЙ ДЛЯ НОВИЧКА И В ТО ЖЕ ВРЕМЯ ДЕЙСТВЕННОЙ АЛЬТЕРНАТИВЫ ПРОСТО НЕТ!

Отправлено спустя 5 минут 28 секунд:
GDAN7777 писал(а):
15.09.2021{, 20:22}
Отлично.Сколько памяти занято в данном примере?
И Вы туда же. Да сколько бы небыло. У меня ESP32. В связи с чем вопрос теряет смысл.
Хотя если стоит выбор чем пожертвовать ПАМЯТЬЮ или СКОРОСТЬЮ. В пльзу чего Вы бы отдали свой голос?
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

GDAN7777
Сержант
Сообщения: 147
Зарегистрирован: 15.04.2020{, 06:19}
Репутация: 22
Имя: Vital

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#23

Сообщение GDAN7777 » 15.09.2021{, 21:11}

Dryundel писал(а):
15.09.2021{, 20:58}
И Вы туда же. Да сколько бы небыло. У меня ESP32. В связи с чем вопрос теряет смысл.
Хотя если стоит выбор чем пожертвовать ПАМЯТЬЮ или СКОРОСТЬЮ. В пльзу чего Вы бы отдали свой голос?
У меня чисто практический интерес,без всяких НО.Остальное мне известно:)Я про ESP32 и говорю,просто на кону работа с ним намечается,довольно большая,поэтому и конкретный вопрос.
P/S Да не реагируйте вы так на критику.Любая разработка-это всегда компромисс между чем,что хотелось и что получилось.ВСЕГДА.
Лучше продолжайте радовать своими новыми наработками,они у вас честное слово очень хорошо получаются.Особая благодарность за справку,многим здесь стоит у вас поучиться в плане оформления и доведения проекта до законченного состояния.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2110
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 256
Имя: Владимир

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#24

Сообщение rw6cm » 15.09.2021{, 21:44}

Dryundel писал(а):
15.09.2021{, 20:58}
Немного не правильно. LCD_V2.18 не пропускает ни одного цикла. Логика построена на изменении входных данных и если данные не изменились, то и переписывать их незачем.
Следовательно основной код в этом цикле не выполняется (пропускается), в сравнении с штатным который выполняет обновления в каждом цикле. а если учесть что на входе блока константа, то код в вашем блоке выполняется один раз. Это как раз таки жульничество )))
Dryundel писал(а):
15.09.2021{, 20:58}
А вот это как раз не равные условия, а жульничество. Никто в скетче (проекте) не запускает обращение через каждые 32000 циклов.
Это всего лишь ваш тест. И условия как раз равны. 11 раз за сек обновить изменявшуюся информацию. Это даже ближе к реальности.
Но факты как вы поняли не вашу пользу. В остальном согласен. Для новичков понять в чем причина тяжело.
Win10-64, FLProg (portable)

ecoins
Подполковник
Сообщения: 1335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 221
Откуда: Шатура
Имя: Энвер

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#25

Сообщение ecoins » 15.09.2021{, 22:14}

Dryundel писал(а):
15.09.2021{, 20:58}
НО ПРОСТОЙ, ДОСТУПНОЙ ДЛЯ НОВИЧКА И В ТО ЖЕ ВРЕМЯ ДЕЙСТВЕННОЙ АЛЬТЕРНАТИВЫ ПРОСТО НЕТ!
Преувеличение. Детишки 7-8 лет используют блоки LCD от ecoins. В них есть и некоторые функции которые мы у видели в Ваших функциях. Нет русификации нерусифицированных дисплеев. Есть русификация русифицированных дисплеев. Есть ещё много чего.
И предположу шустрее всех известных нам библиотек LCD включая LCD v.2.18.
Последняя красиво описана и начинать пользоваться ей возможно проще.
Успехов всем разработчикам.
Конструктивным критикам тоже желаю успехов. :smile44:

GDAN7777
Сержант
Сообщения: 147
Зарегистрирован: 15.04.2020{, 06:19}
Репутация: 22
Имя: Vital

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#26

Сообщение GDAN7777 » 15.09.2021{, 22:19}

ecoins писал(а):
15.09.2021{, 22:14}
Конструктивным критикам тоже желаю успехов.
Без критики и развития нет и зазнайство растет :)

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#27

Сообщение Dryundel » 15.09.2021{, 22:19}

rw6cm писал(а):
15.09.2021{, 21:44}
Следовательно основной код в этом цикле не выполняется (пропускается), в сравнении с штатным который выполняет обновления в каждом цикле. а если учесть что на входе блока константа, то код в вашем блоке выполняется один раз. Это как раз таки жульничество )))
Ок. Начнем сначала.
Вот вам тест.
Буду рад если сможете показать где здесь жульничество. Вот тогда и будет что обсуждать.
ТестПоказать
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

Аватара пользователя
rw6cm
Полковник
Сообщения: 2110
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 256
Имя: Владимир

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#28

Сообщение rw6cm » 16.09.2021{, 01:21}

Dryundel писал(а):
15.09.2021{, 22:19}
Буду рад если сможете показать где здесь жульничество.
То что ваш блок в плане настроек и работе с циклами удобней разговора нет. Блок хороший.
Но если сравниваете, то надо по хорошему.
а то получается, вы в своем блоке кодом отжали все что можно, а штатному облегчить работу рука не подымается :)
ESP32 Штатный дисплей 1.zip
п\с адрес в дисплее забыл сменить на 3f
Для скачивания вложений Вы должны быть зарегистрированы.
Win10-64, FLProg (portable)

ecoins
Подполковник
Сообщения: 1335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 221
Откуда: Шатура
Имя: Энвер

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#29

Сообщение ecoins » 16.09.2021{, 05:18}

rw6cm писал(а):
16.09.2021{, 01:21}
То что ваш блок в плане настроек и работе с циклами удобней разговора нет. Блок хороший.
Но если сравниваете, то надо по хорошему.
Мнение разработчика:
Изучили на уровне колов и перепробовали много разных библиотек для LCD HD44780. В том числе и альтернативную.
Подходы примененные в стандартной библиотеке приходно для тестовых и небольших проектных применений.
Однако при росте размера проекта разработчик начинается сталкиваться с проблемами "торможения", причины которых без аналитического анализатора и понять то сложно.
Вышеприведенные тестовые сравнения очень полезны и поучительны.
И не вполне объективные в контексте применения в проектных - от средних (условно 6-8 плат) и выше.
Там будет очевидны преимущества альтернативного редактора (если конечно в проект не будут вставлены другие "еще более тормозные" библиотеки.
Вывод разработчика:
1.Стандартная библиотека - это "зло".
2.Альтернативная библиотека имеет только достоинства, при этом (в отличии от библиотеки ecoins) сохранила компактность.
3.Еще больший эффект использования можно достичь не вызывая платы с блоками LCD (да и другие платы) в каждом цикле.
Применения простейшего планирования задач(плат) по времени приводит к дополнительному эффекту.
Один из возможных способов - простой счетчик и перебор по методу типа "Круглый Робин".
-----
Успехов участникам темы - интересно, содержательно, полезно.

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#30

Сообщение Dryundel » 16.09.2021{, 08:14}

rw6cm писал(а):
16.09.2021{, 01:21}
Но если сравниваете, то надо по хорошему.
а то получается, вы в своем блоке кодом отжали все что можно, а штатному облегчить работу рука не подымается
Класс. По вашей логике, что бы сравнить двух спортсменов - бегунов, сильному надо дать мешок картошки а убогому велосипед. Только в этом случае сравнение будет честным. :smile171:
Ну ОК. Давайте ваш тест сравним.
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

Аватара пользователя
Phazz
Полковник
Сообщения: 1778
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 157
Откуда: Сургут
Имя: Анатолий

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#31

Сообщение Phazz » 16.09.2021{, 08:37}

А так все хорошо начиналось. Просьба к модераторам выделить весь этот срач в отдельную тему. А Дрюндель пусть продолжает заниматься просвещением. Ведь он прав в главном работа блока дисплея из коробки очень не оптимальна, новичков это порой ставит в тупик. И наверное это Сергей должен улучшить штатный блок, а не Дрюндель свой ухудшить.

Аватара пользователя
ingener
Лейтенант
Сообщения: 524
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 15
Имя: Андрей

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#32

Сообщение ingener » 16.09.2021{, 09:19}

Имеет ли смысл вывести тактовый сигнал на физический пин контроллера и смотреть осциллографом реальную частоту (или период) ?
Тогда можно будет наблюдать в реальном времени изменения в зависимости от режима работы - включения разных блоков, плат и пр.

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#33

Сообщение Dryundel » 16.09.2021{, 09:19}

Phazz писал(а):
16.09.2021{, 08:37}
Просьба к модераторам выделить весь этот срач в отдельную тему.
Зачем? По моему никакого срача. Идет конструктивное обсуждение достоинств, недостатков и вариантов.

Отправлено спустя 2 минуты 33 секунды:
Тема тормозов связанных с временем цикла весьма актуальна.

Отправлено спустя 4 минуты 14 секунд:
Правда предложений маловато. В основном критика. А хотелось бы что бы сильные форума сего принимали больше участия в данном направлении.

Отправлено спустя 28 минут 5 секунд:
ecoins писал(а):
16.09.2021{, 05:18}
1.Стандартная библиотека - это "зло".
2.Альтернативная библиотека имеет только достоинства, при этом (в отличии от библиотеки ecoins) сохранила компактность.
Не совсем понятно о какой "Альтернативной" библиотеке идет речь. Если Вы говорите о блоке LCD 2.18, то там используется стандартная библиотека LiquidCrystal и лишь при руссификации подключается другая, которая все равно подключает LiquidCrystal. Другое дело каким образом в блоке используются функции библиотеки.

Отправлено спустя 17 минут 15 секунд:
ecoins писал(а):
16.09.2021{, 05:18}
3.Еще больший эффект использования можно достичь не вызывая платы с блоками LCD (да и другие платы) в каждом цикле.
С этим сложно не согласится. Однако использование планировщика ecoins не панацея. Приходится быть очень аккуратным при использовании клемм и переменных. В противном случае проект тупо перестает работать. Я все время пытаюсь подойти к вопросу с точки зрения новичка и некоторые моменты из разработок ecoins весьма сложны для понимания. Именно по этой причине они (библиотеки от ecoins) не подходят совсем новичкам. Но это не означает что эти библиотеки плохи. Просто порог входа чуть выше начального уровня коим обладают многие пользователи FLProg. Но их нельзя судить за это, им больше не требуется, программирование для многих это всего лишь сбособ заставить конкретную железяку работать и лишь не многие углубляются дальше в изучение сего ремесла.
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

Аватара пользователя
rw6cm
Полковник
Сообщения: 2110
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 256
Имя: Владимир

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#34

Сообщение rw6cm » 16.09.2021{, 10:28}

Dryundel писал(а):
16.09.2021{, 08:14}
Давайте ваш тест сравним.
Что сравнивать?
Что алгоритм вашего блока съедает больше процессорного времени в цикле, пример был.
Что за счет более правильного режима работы он меньше мешает работе других программ, это понятно.
В предложенном вами видео ссылаетесь на запоздалую информацию штатного блока LCD,
простые действия в моем примере выше это устраняют.
Это не аргументы в чью либо пользу. Просто более объективное дополнения для этой темы.
Вы находите более удачные варианты библиотек для блоков, это хорошо. Но это не панацея для FLProg.
Библиотека это пример кода для конкретной задачи. В основном рассчитан на программиста,
который будет использовать и модифицировать его под свои программы,
и за частую библиотеки не подходят под многозадачность FLProg .
К тому же мы всегда будем зависеть от их обновлений, модификаций и тд.
Будете ли вы за этим следить и обновлять свои блоки не известно.
Раз уж поднята такая тема, то и примеры решений должны быть не только с помощью своих ПБ,
но и штатными инструментами, т.к новичкам далеко до писания своих ПБ.
Win10-64, FLProg (portable)

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#35

Сообщение Dryundel » 16.09.2021{, 18:36}

rw6cm писал(а):
16.09.2021{, 10:28}
Раз уж поднята такая тема, то и примеры решений должны быть не только с помощью своих ПБ,
но и штатными инструментами
Вот это реальный аргумент.
Почти со всем что написано в предыдущем посте согласен.
Пожалуй стоит добавить вариант с генератором в первые посты.
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

ecoins
Подполковник
Сообщения: 1335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 221
Откуда: Шатура
Имя: Энвер

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#36

Сообщение ecoins » 16.09.2021{, 19:57}

rw6cm писал(а):
16.09.2021{, 01:21}
ESP32 Штатный дисплей 1.zip
(197.94 КБ) 6 скачиваний
А как Вы 5-вольтовый LCD подключаете к 3.3v ESP32?
Мы подключаем через конверторы уровней.

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#37

Сообщение Dryundel » 16.09.2021{, 21:00}

ecoins писал(а):
16.09.2021{, 19:57}
А как Вы 5-вольтовый LCD подключаете к 3.3v ESP32?
Мы подключаем через конверторы уровней.
Все очень просто. Уже не первый такой вопрос приходит в личку. Конвертеров не использую.
Суть в том, что в основном (в большинстве случаев) 5V LCD дисплеи отлично воспринимают сигнал 3,3V. Говорят бывают другие, которые так не работают, но лично мне такие не попадались. А сам дисплей подключаю в 5V.
Единственное чего стоит остерегаться, это запроса адреса дисплея, ибо сигнал будет 5V.
Говорят еще, что пины I2C на ESP32 толерантны к 5V. Но врать не буду ибо не проверял. Адрес дисплея известен по маркировке чипа, а по 4 бит не подключаю. Жмотничаю. :)

Отправлено спустя 2 минуты 42 секунды:
rw6cm писал(а):
16.09.2021{, 10:28}
Раз уж поднята такая тема, то и примеры решений должны быть не только с помощью своих ПБ,
но и штатными инструментами, т.к новичкам далеко до писания своих ПБ.
Добавил информацию в третий пост и ваш тест тоже. Если чо не так, пишите в личку, разберемся, поправлю.
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

sergserg
Сержант
Сообщения: 171
Зарегистрирован: 25.02.2021{, 14:26}
Репутация: -8
Имя: Сергей

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#38

Сообщение sergserg » 16.09.2021{, 21:10}

ecoins писал(а):
16.09.2021{, 05:18}
новичков это порой ставит в тупик. И наверное это Сергей должен
так стандартные блоки это как блинк. т.е. чисто для примеров и низкого уровня вхождения

ecoins
Подполковник
Сообщения: 1335
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 221
Откуда: Шатура
Имя: Энвер

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#39

Сообщение ecoins » 16.09.2021{, 21:11}

Dryundel писал(а):
16.09.2021{, 21:03}
Единственное чего стоит остерегаться, это запроса адреса дисплея, ибо сигнал будет 5V.
Говорят еще, что пины I2C на ESP32 толерантны к 5V.
Вполне возможно.

Аватара пользователя
Dryundel
Подполковник
Сообщения: 1347
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 421
Откуда: Ярославль
Имя: Андрей
Контактная информация:

ВРЕМЯ ЦИКЛА или что убивает ваш проект.

#40

Сообщение Dryundel » 16.09.2021{, 21:13}

sergserg писал(а):
16.09.2021{, 21:10}
так стандартные блоки это как блинк. т.е. чисто для примеров и низкого уровня вхождения
Сказал старый пират молодому юнге. :smile171:
Некоторые всю жизнь FLProg пользуются штатными блоками и дальше не идут.
К сожалению.
Последний раз редактировалось Dryundel 16.09.2021{, 21:18}, всего редактировалось 1 раз.
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

Ответить

Вернуться в «Обучающие примеры работы в FLProg»