Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Одновременная работа нескольких скриптов
cirus
сообщение 24.9.2014, 14:36
Сообщение #1


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Например, есть 2 скрипта. Один проверяет if'ом 10 точек на нужный цвет, второй For'ом перебирает 18 картинок.
Работа скриптов по одному (linedelay 0):
Время варьируется в пределах +-10мсек
Время работы первого около 300 мсек, загрузка цп 1-2%
Время работы второго около 730 мсек, загрузка цп 2-3%

Работа скриптов одновременно (linedelay 0):
Время работы первого около 560 мсек, загрузка цп 0-1%
Время работы второго около 1460 мсек, загрузка цп 0-2%

Т. е. вместо того чтобы загрузить цп, пилот снижает нагрузку, соответственно время работы скриптов увеличивается.
Запуск 3 скрипта еще увеличит время работы всех скриптов. При этом нагрузка на цп никак не изменится.
Приоритет скриптов никак не повлиял на их время работы.

Это как-то можно решить?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.9.2014, 14:57
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



В текущей версии нет. Вычисления почему-то стали не многопточными. Вообще очень большой вопрос как это вообще получилось. Раньше каждая вкладка пилота была полностью независимой. Вообще это надо править и править сильно надо.
Но самая фишка в том, что if отрабатывает не более 30 раз в секунду. Проводил специальные тесты, кто-то с форума(прости за то, что ник не вспомню) написал даже небольшую прогу для этих целей. Как только начинает работать иф, то фпс сразу же падает до 30. Именно до 30. Почему так я не знаю. Подозреваю, что пилоту на эту операцию надо 2 развертки, а герцовка у меня 60.

Отключи слежение, если включено.
Из новых способов выжать производительности:
Переключи вкладку на неактивную. Это реально дает хороший прирост.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 25.9.2014, 2:07
Сообщение #3


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Слежение всегда выключено. Переключение на неактивную вкладку никак не повлияло. Судя по hint timer.
Самое интересное что даже если запущено 2 пилота и в каждом по одному скрипту, тоже самое падение производительности.
Непонятно почему if'у требуется 30 мсек для проверки цвета в конкретной точке, при том что findcolor в FullHD находит цвет меньше чем за 100 мсек.
У меня пилот никак не влияет на фпс в л2, но что-то меняется, при повороте камеры это немного заметно, даже не знаю как объяснить. Поворот камеры какой-то плавающий, даже если фпс за 100. И это не торможения и не лаги (i7 и ram-диск на весь клиент л2). Хотя привыкаешь и кажется что так и должно быть (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 25.9.2014, 5:42
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Непонятно почему if'у требуется 30 мсек для проверки цвета в конкретной точке, при том что findcolor в FullHD находит цвет меньше чем за 100 мсек.
У меня пилот никак не влияет на фпс в л2, но что-то меняется, при повороте камеры это немного заметно, даже не знаю как объяснить. Поворот камеры какой-то плавающий, даже если фпс за 100. И это не торможения и не лаги (i7 и ram-диск на весь клиент л2). Хотя привыкаешь и кажется что так и должно быть smile.gif

Опять же мои догадки. If запрашивает цвет пикселя через WinAPI, скорее всего в WinAPI эта функция не многопоточная и запросы просто складываются в очередь. Т.е. сколько раз мы не запускаем пилот - очередь будет одна и та же. При этом есть очень интересный момент - при работе через Астер одно рабочее место не влияет на другое. Т.е. на каждую сессию либо на каждого пользователя идет своя обработка. Можно кстати попробовать запустить одновременно одно приложение и пилот от двух разных пользователей и посмотреть изменится ли при этом производительность. Вторичный вход в систему в службах должен быть включен для подобных манипуляций.
То, что вы видите "подергивание" - это пропуск фрейма вывода изображения. Если фрейм попал в выводимый, то он будет пропущен и будет микрофриз. При этом фпс в приложении может почти не падать, т.к. счетчики фпс замеряют количество кадров за определенный промежуток времени и если запросы происходят не часто, то на счетчике вы не увидите существенных изменений. Например счетчик считает 5 секунд фпс и выводит срединй, т.е. будет что-то вроде 342/5. Сильную разницу вы увидите, если будет не 342, а 341? А вот изображение дернется. В качестве эксперимента сделайте скрипт состоящий только из if'а без каких либо задержек и получите реальную просадку.

Сообщение отредактировал DarkMaster - 25.9.2014, 6:30


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 25.9.2014, 11:58
Сообщение #5


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Можно кстати попробовать запустить одновременно одно приложение и пилот от двух разных пользователей и посмотреть изменится ли при этом производительность.

С л2 такие фокусы не проходят, вылетает с критом.

Цитата
В качестве эксперимента сделайте скрипт состоящий только из if'а без каких либо задержек и получите реальную просадку.

На взгляд при linedelay 2 подергивания больше чем при 0, хотя фпс не меняется (проверял только fraps'ом) , но если увеличить задержку между строк до 100, то подергивания почти исчезают. В целом это не так волнует, как производительность. Может в следующих версиях что-то изменится.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 25.9.2014, 12:05
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Это скорее в следующей версии винды =) Либо искать обходные пути и запрашивать не через винапи, а, например, напрямую с видюхи. Технология возврата изобажения существует, вот только знаний нет...


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.9.2014, 20:08
Сообщение #7


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Это скорее в следующей версии винды =)

Тут в одной темке упомянули другой кликер. Решил посмотреть что там. На мой взгляд не конкурент пилоту, но всё-таки есть разница.
Написал там самый простой скрипт. В пилоте выглядело бы так:
if 525, 228 14255635
set #time #time + 1
hint #time
end_if

За 10 сек тот кликер досчитал до 1160, пилот до 280.
Видимо дело не в винде, а в реализации if'а.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.9.2014, 21:09
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Дык я и написал, что либо менять схему запроса либо ждать чуда. Вы еще в том кликере математику грубую прогоните. Такой тормоз... Пилот на пару ноликов быстрее (IMG:style_emoticons/default/smile.gif)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2014, 13:00
Сообщение #9


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Дык я и написал, что либо менять схему запроса либо ждать чуда.

А что мешает?
Вот 2 скрипта делающих одно и тоже.
Код
set linedelay 0
set #handleWin findwindow (II)   //окно л2
set workwindow #handleWin
while timer < 10000
   get color #b 217 30      //можно использовать if 217 30 26011, это ничего изменит
      if #b = 26011
         set #a #a + 1
         hint #a
      end_if
end_while
   stop_script

результат #a = 295

Код
set linedelay 0
set #handleWin findwindow (II)   // окно л2
set workwindow #handleWin
while timer < 10000
   get color #b 217 30 [#handleWin]    
      if #b = 26011
         set #a #a + 1
         hint #a
     end_if
end_while
   stop_script

результат #a = 1626
Кстати, 2й вариант мало того что быстрее, так еще и в перекрытых окнах работает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 26.10.2014, 13:20
Сообщение #10


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
get color #b 217 30 [#handleWin]

для начала что там делают квадратные скобки? Это тебе не массив.
Цитата
if #b = 26011

Зачем? Ты же сравниваешь производительность методов, и тут же делаешь уязвимое место. А вдруг там цвет изменялся? К тому же это жрет производительность.
Цитата
hint #a

Это вообще жесть. Это тормоз. Зачем каждый раз выводить это на экран? Не проще в конце скрипта дописать вывод?

У тебя очень много жрет сам скрипт, а не определение цветов. Хотя в целом очень интересно, спорить не буду.

Сообщение отредактировал DarkMaster - 26.10.2014, 13:21


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2014, 13:49
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Согласен, можно чуть ускорить. В любом случае используя get color с привязкой к окну значительный прирост производительности.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2014, 14:12
Сообщение #12


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



С Findcolor и Findimage при поиске workwindow также прирост производительности.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 26.10.2014, 14:49
Сообщение #13


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Код
set linedelay 0
set #handleWin workwindow
set workwindow #handleWin
while timer < 10000
   get color #b 217 30 #handleWin  
      if_not #b = 26011
         set #a #a + 1
         hint #a
     end_if
end_while
stop_script

3616 за 10000мс т.е. примерно:
2.7655 мс на цикл.

Код
set linedelay 0
set #handleWin workwindow
set workwindow #handleWin
for #i 1 10000 1
   get color #b 217 30 #handleWin  
end_for
log timer
stop_script

10000 считываний за 18735 мс, т.е.:
1.8735 мс на цикл.

У тебя 30% жрала паразитная обработка. Думаю особенно жрал хинт.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2014, 15:20
Сообщение #14


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
10000 считываний за 18735 мс

Это как так? У меня 59342 мс. Можно конечно на процессор свалить, но пилот грузит его на 2%. i7 4,4 Ггц.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 26.10.2014, 15:25
Сообщение #15


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



ну вот так) q9300 на 3400 частотка поднята. видео 460gtx вин 7 x64. У меня есть подозрения почему так, но писать не буду, т.к. выдаст схему работы.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2014, 15:33
Сообщение #16


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Прикольно. i7 2600k 3,4 Ггц (разгон до 4,4 Ггц), gtx 580, win 7 x64. А пилот работает медленнее чем у тебя.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2014, 15:51
Сообщение #17


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Понятно в чём дело. От фпс зависит. Если запускать скрипт при выборе персонажа, где фрапс показывает 500+ фпс, то около 21000 мс. Заходишь в игру, падает фпс, соответственно увеличивается время.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.10.2014, 3:04
Сообщение #18


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Пока, есть такой вариант:
В одном скрипте использовать обычный if, get color и т. д
Во втором скрипте с привязкой workwindow.
К примеру, get color и get color workwindow не влияют на производительность друг друга при одновременной работе.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 27.5.2019, 3:26
Сообщение #19


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



cirus , DarkMaster, у вас еще то же железо?
Могли бы повторить этот тест на свежей версии пилота. Хотел бы сравнить результаты старой и новой версии пилота. Ато мне мое допотопное железо какой-то странный результат показало, думаю не в версии пилота ли дело.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.5.2019, 10:48
Сообщение #20


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Зависит не от версии пилота, а от фпс в игре.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 21:44
Designed by Nickostyle