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

 
Ответить в эту темуОткрыть новую тему
> For
Capucci
сообщение 20.3.2019, 2:57
Сообщение #1


**

Neophyte
Сообщений: 25
Регистрация: 5.3.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.253



Приветствую!

Есть ли возможность сделать команду for короче по времени обработки, чтобы цикл был одинарный, а не несколько, как по умолчанию?

Пример с командой FindImage:

Код
 
for #i 1 #size 1                     // цикл для поиска картинок
    set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
    if  #a > 0
        move %arr[1 1] %arr[1 2]     // переместить курсор на найденную картинку
        wait 500                     // ждать 0,5 секунды
    end_if
end_for


Просто выходит, что данная команда обрабатывает одно и то же несколько раз и тратится дополнительное время на второй и третий анализ, хотя достаточно одного.
Единственное в чем может я неправ, так это в том, что за эти циклы команда обрабатывает все картинки, которые стоят в поиске и просто не сделать один цикл, так как не будет возможности у команды охватить все картинки. Всего картинок в моем случае - 25.
Но, если эта теория неверна, то упростить for до одного цикла было бы очень и очень здорово.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 20.3.2019, 3:22
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26576
Пользователь №: 16.971
Возраст: 29



Цитата
сделать команду for короче по времени обработки
Всего картинок в моем случае - 25.

For тут непричём, 25 итераций выполнятся быстро.
Для поиска 25 картинок придётся 25 раз вызвать findimage. Либо использовать break, если не требуется всегда искать 25 картинок.
Если нужно искать быстрее, то используйте GetImage
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 20.3.2019, 15:39
Сообщение #3


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
wait 500 // ждать 0,5 секунды
Вместо этого просто поставить break . Вы ищете все картинки (сказали уже как прерывать поиск), хотите скорости и сами же ещё и тормозите поиск 25*0,5 - это 12,5 секунд абсолютно бессмысленного убивания времени поиска. Если нужна пауза - делайте её уже после цикла.


Ну и как уже сказали, если нужна скорость, при поиске перебором однозначно нужно использовать поиск в памяти используя getimage. Если и этой скорости будет мало - переходите на lua.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 20.3.2019, 16:51
Сообщение #4


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Сорри, не доглядел, пауза выполняется 1 раз, но break нужен. Просто у меня на любые паузы аллергия. (IMG:style_emoticons/default/biggrin.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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