@6849386649
Нажмите Ctrl+F для вызова поиска действий.
Прикрепите, пожалуйста, проект, в котором возникает проблема, сюда или в ЛС форума.
Оптимизация действия "Проверить существование"
-
Всем привет!
Есть проект, который работает в браузере с сайтом на JS в 30 потоков. Скрипт создает существенную нагрузку на ЦП, что вызывает замедление работы скрипта, тормоза интерфейса BAS и т.д. Решил разобраться с помощью встроенного в BAS профилировщика (Отчет о времени выполнения действий), почему.
В итоге обнаружил, что одно действие создает 50% нагрузки на ЦП. Это действие "Проверить существование", которое в цикле while проверяет наличие на странице лоадера (после любого клика на сайте жду, когда пропадет лоадер, ибо по другому тут не определить полную загрузку страницы, сайт SPA на JS же).
Вопрос: как можно оптимизировать действие "Проверить существование" или отказаться от него в данном случае? Думал добавить просто задержку в цикл, но это снижает скорость реакции скрипта на загрузившуюся страницу.
-
-
@spacerange said in Оптимизация действия "Проверить существование":
#2
@doupiu Не знаю поможет или нет, но я подобную проблему решил так. Вместо цикла с проверить существованием я ставил ожидание элемента, а на нем игнорирование ошибок. И в зависимости от ошибки уже выполнял какое нибудь действие.потом логи ошибок и восстановлено, забиты хламом.
-
@Dodok said in Оптимизация действия "Проверить существование":
потом логи ошибок и восстановлено, забиты хламом.
Это не так важно по сравнению с полным зависанием скрипта от перегрузки его циклами, тем более что не для всех скриптов необходимо потом смотреть логи. Несколько минут в нотепаде решит эту проблему.
-
-
@spacerange said in Оптимизация действия "Проверить существование":
@doupiu Не знаю поможет или нет, но я подобную проблему решил так. Вместо цикла с проверить существованием я ставил ожидание элемента, а на нем игнорирование ошибок. И в зависимости от ошибки уже выполнял какое нибудь действие.
Может и помогло бы, но мне тогда нужен кубик "Ждать пропадания элемента" вместо "Ждать появления элемента", а таковой отсутствует :)
-
Если не тайна, скиньте в личку ссылку на сайт.
-
@Dodok
После каждого клика может появиться несколько видов ошибок или клик может просто не сработать. Из-за этого, если расставлять "Ждать появления", скрипт будет ждать того, чего не дождется. Сейчас же после каждого клика стоит функция "FullLoad" (цикл с проверкой существования лоадера) + "Проверить существование" ожидаемой страницы. То есть если что-то не так - он сразу выходит из потока. Компактно и работает без нареканий, но вот с нагрузкой проблема. -
@doupiu said in Оптимизация действия "Проверить существование":
@Dodok
После каждого клика может появиться несколько видов ошибок или клик может просто не сработать. Из-за этого, если расставлять "Ждать появления", скрипт будет ждать того, чего не дождется. Сейчас же после каждого клика стоит функция "FullLoad" (цикл с проверкой существования лоадера) + "Проверить существование" ожидаемой страницы. То есть если что-то не так - он сразу выходит из потока. Компактно и работает без нареканий, но вот с нагрузкой проблема.Плюс лоадер может появляться также после различного рода селектов и других взаимодействий, страница не меняется и привязаться к ожиданию чего-то проблематично.
Поэтому нужно что-то, завязанное на лоадере, потому что пропадание лоадера - 100%-ный вариант.
-
@bigorat said in Оптимизация действия "Проверить существование":
@doupiu, а вы пробовали в цикле после всех проверок наличия элементов ставить ожидание хотя бы в секунду? Я так же использую проверки в циклах, но всегда добавляю паузу, у себя огромного потребления ресурсов не вижу.
Да, но, к сожалению, это не вариант. Кликов много, если везде ждать даже по 0,5 сек - набегает лишняя задержка. А мне как раз скорость важна, я для этого и хочу нагрузку снизить, чтобы скорость увеличить..
-
Что сделал в итоге:
- Первое и самое главное: разделил цикл на 3 разных цикла (у меня там 3 вида лоадеров и проверялись все в одном цикле). Разделение на 3 цикла уже само по себе уменьшило нагрузку считай в 3 раза (т.к. теперь крутится в цикле одно действие "Проверить существование", а не 3 как раньше).
- Добавил задержку 300 мс в цикл. Так работает даже быстрее, чем без задержки, т.к. не виснет ЦП.
-
@doupiu said in Оптимизация действия "Проверить существование":
Что сделал в итоге:
2) Добавил задержку 300 мс в цикл. Так работает даже быстрее, чем без задержки, т.к. не виснет ЦП.ну вот об этом я и говорил, иногда чуть медленнее оказывается быстрее :)
Есть много тем на форуме - когда добавление небольшой задержки выводит скрипт из зависонов и оверхеда.
