1 (изменено: Regent, 2012-07-15 14:10:31)

Тема: AHK: ImageSearch - быстродействие команды

На 32 битной win7 скрипт с циклом из более чем 500 повторов этой команды исполнялся с достаточной скоростью - не более 1-2 секунд
После перехода на win7 х64 одна такая команда занимает по времени от 47 до 62мс - 500 циклов дает общее время порядка 25-30сек, что совершенно не устраивает, скорость упала на порядок.
Проверял следующим образом, сравнить этот же код на х32 не могу, нету под рукой.

fpath=E:\
Space::
   b_begin:=A_TickCount
   ImageSearch, x_i, y_i, 0, 0, 100, 100, *Trans0x00ff00 %fpath%файл.bmp
   b_end:=A_TickCount
   MsgBox % (b_end - b_begin)/1000 " сек.- " x_i "," y_i
Return

Размеры области поиска, искомой области, вид маски - на скорость не влияют, пробовал и сборку AutoHotkey_L и режимы совместимости и запуск от админа - скорость от 47 до 62мс

Правильно ли измеряю скорость исполнения, если нет то как это сделать корректно и, собственно, сама проблема - как понизить настолько возросшее время исполнения скрипта?

Если замеры корректные - поскольку размеры областей не влияют на скорость то (хотя по логике должны), видимо, имеет место искусственная задержка гораздо большая самого времени поиска
Может быть существуют директивы для исполнения скрипта.

2

Re: AHK: ImageSearch - быстродействие команды

Всё что связано с прозрачными областями работает на порядок медленее. Если есть возможность попробуй перейти на простые *.jpg

3 (изменено: Александр_, 2012-07-15 15:18:39)

Re: AHK: ImageSearch - быстродействие команды

Regent пишет:

На 32 битной win7 скрипт с циклом из более чем 500 повторов этой команды исполнялся с достаточной скоростью - не более 1-2 секунд
После перехода на win7 х64 одна такая команда занимает по времени от 47 до 62мс - 500 циклов дает общее время порядка 25-30сек, что совершенно не устраивает, скорость упала на порядок.

Первое выполнение самое долгое, после него в игру вступает кэш-память, что сильно увеличивает производительность.

Regent пишет:

сравнить этот же код на х32 не могу, нету под рукой.

Во-первых не x32, а x86. А во-вторых в 64-битной системе можно выполнять 32-хбитные приложения. Время выполнения должно быть примерно одинаковое, разрядность тут никак не влияет на поиск.

Regent пишет:

Размеры области поиска, искомой области, вид маски - на скорость не влияют, пробовал и сборку AutoHotkey_L и режимы совместимости и запуск от админа - скорость от 47 до 62мс

Плохо пробовал. Попробуй сделать скриншот рабочего стола и найти его его, а потом измени один пиксель в правом нижнем углу и повтори поиск. Второй поиск будет вдвое дольше первого, но можно и в сотни раз увеличить его продолжительность, если искать прямоугольник определённого цвета, а рабочий стол залить этим цветом, но добавить вкрапления другого цвета так, чтобы искомого прямоугольника не было.
На оф. сайте доступен исходный код AHK_L, там в файле script2.cpp находится код функции ImageSearch.

Pokerist пишет:

Всё что связано с прозрачными областями работает на порядок медленее. Если есть возможность попробуй перейти на простые *.jpg

1) Не правда.
2) Зачем? Для поиска всё равно придётся в *.bmp перевести.

4

Re: AHK: ImageSearch - быстродействие команды

Проблема оказалась в стилях (аэро и прочие), на классике быстродействие пришло в норму.

5

Re: AHK: ImageSearch - быстродействие команды

«Проблема» присутствует и в x86 и в x64 системах, «правильный ответ» невозможен исходя из формулировки вопроса.

6

Re: AHK: ImageSearch - быстродействие команды

Александр_ пишет:
Pokerist пишет:

Всё что связано с прозрачными областями работает на порядок медленее. Если есть возможность попробуй перейти на простые *.jpg

1) Не правда.
2) Зачем? Для поиска всё равно придётся в *.bmp перевести.

Беру свои слова назад. Очевидно когда тестировал вмешался ещё какой-то фактор.