1 (изменено: Dexp205, 2019-04-03 23:03:28)

Тема: AHK: Ускорение выполнения цикла поиска графических элементов.

Всем привет! Имеется скрипт, который при помощи бесконечного цикла осуществляет поиск заданных пикселей и графических фрагментов на экране. Хотелось бы добиться максимальной скорости выполнения.
Сделано на данный момент:
1. SetBatchLines -1
2. Области поиска сужены. Пиксельное разрешение искомых фрагментов уменьшено.
3. Там где было можно, заменил поиск фрагмента на поиск пикселя.
4. В результате экспериментов с GDI библиотеками, в частности с функцией Gdip_FastImageSearch, пришел к выводу, что стандартная функция ImageSearch в моем случае демонстрирует себя лучше.
5. Так как в AutoHotkey нет многопоточности, была предпринята попытка разделить исходный скрипт на два других, которые бы осуществляли поиск изображений каждый в своей части экрана. Результата не дало - производительность снизилась. Так же не помогла и компиляция двух новых скриптов в .exe файлы.

2

Re: AHK: Ускорение выполнения цикла поиска графических элементов.

stealzy
Попытался исправить название темы.

3 (изменено: stealzy, 2019-04-04 00:30:32)

Re: AHK: Ускорение выполнения цикла поиска графических элементов.

Нагрузка на проц не является узким местом, посмотрите в диспетчер задач — ни одно ядро на 100% не загружено будет, поэтому и смыcла нет в многопоточности.
Узким местом является скорость копирования bitmap(снимка) из видеопамяти в память процесса скрипта и в меньшей степени скорость чтения памяти при непосредственно поиске.
Тут и появляется пространство для улучшения, если допустим если вы ищите Х разных пикселей встроенной командой PixelSearch, то это займет в Х раз больше времени, чем с использованием функций, потому что нужно сделать Х снимков и Х раз их прочитать для поиска, вместо одного снимка и одного поиска.
http://forum.script-coding.com/viewtopi … 40#p130640
http://forum.script-coding.com/viewtopi … 13#p123013
http://forum.script-coding.com/viewtopi … 12#p123712