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

> Ускорение работы color, color требует отдельный кадр, можно ли ускорить?
KudesniK
сообщение 10.7.2018, 9:09
Сообщение #1


*

Registred
Сообщений: 6
Регистрация: 10.7.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.992



Было замечено, что каждый вызов функции color требует отдельный кадр, рассмотрим пример (отключено слежение, задержка 0ms):
Код
set #counter 0
set timer
while 1
    if timer > 1000
        hint #counter
        set timer
        set #counter 0
    end_if

    set #counter #counter + 1
    set #color color (53, 144)
end_while
end_script
в окнах, где используется vsync количество вызовов color будет ограничено частотой экрана, в моем случае 60, в остальных окнах количество вызовов color может доходить до нескольких тысяч.

Таким образом при необходимости анализа шести разных пикселей на цвет, мы получаем падение производительности скрипта до десяти проверок в секунду, при необходимости контролировать десять пикселей, уже шесть операций в секунду.

Например, заменив одну операцию color на (как пример):
Код
if 255, 380 16777215 and 200, 300 15588051 and 12, 27 5621216 and 33, 33 13743257
    send {f1}
end_if
мы получаем падение производительности в четыре раза (четыре вызова color), т.е. до 15 проверок в секунду, пример выше использован для демонстрации. Соответственно при пяти таких блоках производительность уже будет около трех проверок в секунду.

Альтернативный вариант сделать один снимок экрана и в нем искать нужные цвета в нужных пикселях, но я не нашел как взять цвет пикселя в результате работы GetImage.

Может кто сталкивался, подскажите как решали, или как взять цвет пикселя после фотографии экрана.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Zenogiasu
сообщение 1.5.2024, 3:59
Сообщение #2


***

Novice
Сообщений: 59
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 28



Здравствуйте. Важный для меня вопрос возник. Потребовалась скорость работы, и стал активно изучать луа. Продвинулся в изучении, и решил проверить разницу в скорости работа пилотовского и луавского скриптов идентичных. Скорость нисколько не отличается =( Проверял на примере color/get color
Персонаж в игре двигается, перед шагом я снимаю 5 цветов с 5 точке гет колором, делаю шаг, затем проверка снова тех-же точек - должны измениться, если нет - значит застопали. Делать это приходится часто, мозные компы успевают все действия между шагами проверять а слабые нет. Сейчас в предвкушении перехода на луа сделал 2 проверочных скрипта: 25 гетколоров на пилоте и 25 колоров на луа. Проверил скорость там и там. Она идентична... Также проверил 25 финдколоров на луа, скорость такая-же. Включение/отключение вертикальной синхронизации, снижение/увеличение фпс 60-200 на скорости никак не влияют. Сначала 25 гетов та ми там занимало 800 мс. потом отошел на 10 мин, вернулся, снова тесты и почему-то вдруг стали занимать 400мс, ничего нигде не менял. Черная магия в общем. Скажите подалуйста, в чем тогда заключается скорость луа, если не в таких базовых действиях как снятие цвета?
Вот код можете проверить у себя, спасибо. Скрипты привязаны к игре.
Код

get color #q 1148, 148
get color #q1 1200, 76
get color #q2 1192, 145
get color #q3 1224, 100
get color #q4 1175, 118
get color #q 1148, 148
get color #q1 1200, 76
get color #q2 1192, 145
get color #q3 1224, 100
get color #q4 1175, 118
get color #q 1148, 146
get color #q1 1200, 77
get color #q2 1192, 148
get color #q3 1224, 108
get color #q4 1175, 117
get color #q 1148, 145
get color #q1 1200, 74
get color #q2 1192, 141
get color #q3 1224, 102
get color #q4 1175, 113
get color #q 1148, 142
get color #q1 1200, 73
get color #q2 1192, 144
get color #q3 1224, 105
get color #q4 1175, 115
log timer
end_script

Код

--lua
timer2 = os.clock()
local q = color (1148, 148)
local q1 = color (1200, 76)
local q2 = color (1192, 145)
local q3 = color (1224, 100)
local q4 = color (1175, 118)
local q5 = color (1141, 148)
local q6 = color (1201, 76)
local q7 = color (1191, 145)
local q8 = color (1221, 100)
local q9 = color (1171, 118)
local q10 = color (1142, 148)
local q11 = color (1202, 76)
local q12 = color (1193, 145)
local q13 = color (1222, 100)
local q14 = color (1172, 118)
local q15 = color (1144, 148)
local q16 = color (1204, 76)
local q17 = color (1194, 145)
local q18 = color (1225, 100)
local q19 = color (1174, 118)
local q20 = color (1145, 148)
local q21 = color (1205, 76)
local q22 = color (1195, 145)
local q23 = color (1225, 100)
local q24 = color (1174, 118)
timer3 = os.clock() - timer2
log (timer3)


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

Сообщений в этой теме
KudesniK   Ускорение работы color   10.7.2018, 9:09
Cockney   Если картинка меняется, а захватывать нужно всю об...   10.7.2018, 11:09
KudesniK   Скрипт так же успевает сделать 60 фотографий всего...   10.7.2018, 12:05
Cockney   Само снятие(без проверки цвета) области 200х100 бу...   10.7.2018, 12:36
cirus   Нет. Если область небольшая, то быстрее. Быстрее...   10.7.2018, 12:44
KudesniK   Замеры производительности: 17ms (1/60s) на вызов ...   10.7.2018, 13:50
KudesniK   Имеем производительность порядка 1100 пикселей в с...   10.7.2018, 14:15
cirus   В этом случае надо проверять не в 21 41, а 20 40....   10.7.2018, 14:41
KudesniK   Неплохо бы после получения цветов устанавливать р...   10.7.2018, 15:01
cirus   После: set workwindow windowhandle Все действия б...   10.7.2018, 15:20
DarkMaster   В общем и целом уже достаточно давно использую fin...   11.7.2018, 1:54
kyja   Ответ может быть не совсем верным но тут вроде что...   1.5.2024, 11:56
DarkMaster   У вас фундаментальное непонимание за что отвечает...   1.5.2024, 11:59
Zenogiasu   У вас фундаментальное непонимание за что отвечает...   2.5.2024, 3:49
DarkMaster   Как был в подписи так и есть. Они циферки принуди...   2.5.2024, 6:11
Zenogiasu   Как был в подписи так и есть. Они циферки принуди...   2.5.2024, 13:08
DarkMaster   Ну так потому что логин сменился. Дискорд всем пр...   2.5.2024, 21:06


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

 

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