1

Тема: AHK: Сравнение скоростей

Пишу не сложный скрипт. На 90% это поиск различных картинок. Ещё не для всех картинок написал код, но уже вижу, теряется смысл - скорости не хватает.
Мне нужно, чтобы скрипт срабатывал за одну, максимум 2 секунды, а уже сейчас больше двух. И добавится примерно ещё столько же.

Протестировал скорость работы, зациклив весь скрипт и убирая различные куски кода. Убедился, что 90% времени уходит на поиск картинок, а на расчёты и прочее около 10.
Оптимизировать поиск картинок никак невозможно. Они очень разные и их много. Всё что можно выжать сокращая площадь поиска и размер картинок, я выжал. Похоже на тупик.


Есть мысль попробовать повторить всё это в каком-нибудь простом языке типа Бейсика.  Но не хочется убить месяц, чтобы понять,  что там либо нет тех средств, что есть в AHK, либо, что он работает ничуть не быстрее.

Очень прошу опытных программистов или просто людей знакомых с различными языками программирования подсказать:
1. Есть ли в Бейсике похожие средства поиска картинок с различными встроенными опциями?
2. Как может отличаться скорость работы скрипта AHK и аналогичной программы на Бейсике?
3. От каких компонентов компьютера зависит скорость поиска картинок для AHK?

  Буду рад и другим комментариям или советам.

2

Re: AHK: Сравнение скоростей

Pokerist, не думали о том, чтобы использовать стороннее приложение, например, такое: Image Comparer - поиск визуально похожих изображений?

3

Re: AHK: Сравнение скоростей

Кажется, речь о поиске нестандартных control'ов в окне приложения посредством imageSearch.

Явного увеличения скорости поиска изображения возможно достичь использованием иных алгоритмов поиска.
Взгляните в исходный код ahk, на реализацию команды imagesearch, если есть идеи «как сделать быстрее» — беритесь за изучение компилируемых языков, рано или поздно результат будет получен.

4

Re: AHK: Сравнение скоростей

Скорее всего ImageSearch каждый раз делает снимок экрана заново, соответственно можно ускорится если делать его реже.
Что касается бейсика- вам нужно будет написать свою функцию ImageSearch, которая будет работать быстрее чем та, которую написали разработчики AHK на C++.
Я бы поискал другой способ решения задачи, обычно он имеется.

5 (изменено: Pokerist, 2012-05-17 12:58:16)

Re: AHK: Сравнение скоростей

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

Скорее всего ImageSearch каждый раз делает снимок экрана заново, соответственно можно ускорится если делать его реже.

Да, я вызываю эту функцию до 1000 раз за один "проход".  Что Вы имеете ввиду под "делать это реже"? Разве можно одним вызовом функции искать сразу несколько картинок, или одну картинку сразу в разных местах? 

Что касается бейсика- вам нужно будет написать свою функцию ImageSearch, которая будет работать быстрее чем та, которую написали разработчики AHK на C++.
Я бы поискал другой способ решения задачи, обычно он имеется.

Понял, тут шансов нет.

6

Re: AHK: Сравнение скоростей

Pokerist пишет:

Да, я вызываю эту функцию до 1000 раз за один "проход".  Что Вы имеете ввиду под "делать это реже"? Разве можно одним вызовом функции искать сразу несколько картинок, или одну картинку сразу в разных местах? 

Нужно свою функцию писать. Для поиска картинки в картинке. А зачем всё это, неужели больше нет вариантов?

7

Re: AHK: Сравнение скоростей

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

Да, я вызываю эту функцию до 1000 раз за один "проход".  Что Вы имеете ввиду под "делать это реже"? Разве можно одним вызовом функции искать сразу несколько картинок, или одну картинку сразу в разных местах? 

Нужно свою функцию писать. Для поиска картинки в картинке. А зачем всё это, неужели больше нет вариантов?

Я их не знаю. А Вы?

8

Re: AHK: Сравнение скоростей

Pokerist пишет:

Я их не знаю. А Вы?

А я задачи не знаю.