Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Hito on October 07, 2019, 03:08:01 PM
-
Ребят, может я как-то по-сложному делаю все это? Может есть способ полегче и побыстрее? Этот кусок выполняется пол секунды - это долго...
FOR($y=19,$y<30)
FOR($x=913,$x<947)
$col = PXL ($x, $y)
IF($col ! 16777087)
PXLREPLACE($x, $y, $x, $y, $col, 0)
END_IF
END_CYC
END_CYC
-
15:35:20 =============== время выполнения ===============
15:35:20 время выполнения тест 1 : 232 мс
15:35:20
15:35:55 =============== время выполнения ===============
15:35:55 время выполнения тест 1 : 177 мс
15:35:55
15:36:31 =============== время выполнения ===============
15:36:31 время выполнения тест 1 : 218 мс
15:36:31
15:37:40 =============== время выполнения ===============
15:37:40 время выполнения тест 1 : 205 мс
15:37:40
15:37:41 =============== время выполнения ===============
15:37:41 время выполнения тест 1 : 195 мс
-
Можно всё вывернуть наоборот и попиксельно красить только цвет 16777087, а чёрный весь сразу.
SUB(print_timeaction, $actionnamet, $tt_search)
LOGWRITE("время выполнения ", $actionnamet, " : ", $tt_search, " мс")
END_SUB
GETSCREEN
$timer1 = $_ms
SCANPXL($scan, 913,19, 946,29, 16777087)
PXLREPLACE(913,19, 946,29, -1, 0)
$scan_size = ARRSIZE($scan)
FOR($i=0, $i < $scan_size, 2)
$x = $scan[$i]
$y = $scan[$i+1]
PXLREPLACE($x, $y, $x, $y, -1, 16777087)
END_CYC
UNDEFINE($scan)
print_timeaction("тест 1", $_ms - $timer1)
SCREENSHOT
HALT
16:08:48 =============== время выполнения ===============
16:08:48 время выполнения тест 1 : 151 мс
16:08:48
16:08:49 =============== время выполнения ===============
16:08:49 время выполнения тест 1 : 165 мс
16:08:49
16:08:51 =============== время выполнения ===============
16:08:51 время выполнения тест 1 : 144 мс
16:08:51
16:08:52 =============== время выполнения ===============
16:08:52 время выполнения тест 1 : 178 мс
16:08:52
Если чёрным красить много, то выгодней второй вариант, а если мало... то по идее должен быть первый, но у меня всё равно второй. Максимум - они равны.
Да, мы сначала тратимся на SCANPXL, но он выполняется быстро. Ещё на PXLREPLACE - он тоже быстро, т.к. на весь блок сразу.
И главное убираем из под двойного цикла PXL($x, $y) + IF
А если красить чёрным больше половины, то ещё и на попиксельном PXLREPLACE
-
15:35:20 =============== время выполнения ===============
15:35:20 время выполнения тест 1 : 232 мс
15:35:20
15:35:55 =============== время выполнения ===============
15:35:55 время выполнения тест 1 : 177 мс
15:35:55
15:36:31 =============== время выполнения ===============
15:36:31 время выполнения тест 1 : 218 мс
15:36:31
15:37:40 =============== время выполнения ===============
15:37:40 время выполнения тест 1 : 205 мс
15:37:40
15:37:41 =============== время выполнения ===============
15:37:41 время выполнения тест 1 : 195 мс
Я понимаю, что у тебя быстрее ))) Если б я на хосте запускал, то у меня еще быстрее было бы )) А у меня, как всегда - все на виртуалках...)))
-
Приоритет добавить попробуй.