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

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

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

#21

Сообщение 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. В связи с чем вопрос теряет смысл.
Хотя если стоит выбор чем пожертвовать ПАМЯТЬЮ или СКОРОСТЬЮ. В пльзу чего Вы бы отдали свой голос?

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

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

#22

Сообщение 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
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#23

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

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

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

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

#24

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

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

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

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

#25

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

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

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

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

#26

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

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

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

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

#27

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

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

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

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

#28

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

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

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

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

#29

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

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

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

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

#30

Сообщение 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. Но их нельзя судить за это, им больше не требуется, программирование для многих это всего лишь сбособ заставить конкретную железяку работать и лишь не многие углубляются дальше в изучение сего ремесла.

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

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

#31

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

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

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

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

#32

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

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

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

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

#33

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

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

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

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

#34

Сообщение 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}
Раз уж поднята такая тема, то и примеры решений должны быть не только с помощью своих ПБ,
но и штатными инструментами, т.к новичкам далеко до писания своих ПБ.
Добавил информацию в третий пост и ваш тест тоже. Если чо не так, пишите в личку, разберемся, поправлю.

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

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

#35

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

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

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

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

#36

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

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

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

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

#37

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

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

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

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

#38

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

ecoins,
если завести таймер/ы на первой плате и по ним запускать другие платы - это же равнозначно диспетчеру задач вашему? принцип тот же?

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

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

#39

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

ecoins, было бы не плохо, если бы Вы сделали вариант проекта из первого поста со штатными блоками дисплея и диспетчером задач и выложили здесь. Тогда и ваш вариант я смогу дописать в первых постах.
Только ради бога, как можно проще и понятней. Приостановите слегка полет мыслей. Не перекраивайте проект сильно. Посмотрите пожалуйста пример от rw6cm в третьем посте.

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

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

#40

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

К стати,rw6cm, давно хочу спросить...
ОфтопПоказать
Что такое 6cm мне понятно. А что подразумевается под rw?

Ответить

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