Как оптимизировать код для более быстрого выполнения программы?
1. Глубина цвета 32 бита - уменьшать специально для кибора не хотелось бы..
2. Ведется поиск картинок максимум 50*20 пикселей, основная масса где то 8*10, кол-во картинок не более 10
3. Sleep используется там, где без нее не обойтись, и время задается впритык для выполнения задачи - уменьшить не получится
1. Kuk - 17 Сентября, 2013 - 03:17:40 - перейти к сообщению
2. Kibor - 17 Сентября, 2013 - 07:00:47 - перейти к сообщению
1) Не играет роли. Приведет не к ускорению, а к тому что изображение может не найтись.
2) Это не является большой нагрузкой и в большинстве случаев обрабатывается быстро. Все зависит от того какое именно быстродействие надо. Обработка видео в реальном режиме?
3) Вопрос не ясен. Нужен код.
Самой первой оптимизацией при поиске изображений является ограничивание области поиска. Так же если известно заранее что есть только одно изображение, то первый параметр в findimage ставить в 1. Это для того что бы как нашлось изображение функция завершалась, а не продолжала скан экрана (все равно же больше не будет такого изображения).
Вот к примеру тест скрипт, который ищет вашу аваторку по части ее изображения.
Сохранить этот рисунок на диск С в .bmp:
Открыть эту страницу во весь экран браузера. Аватор должен быть виден.
Запускаем скрипт:
Первый поиск происходит по всему экрану. На моем ноуте функция срабатывает 100 раз примерно за 5 секунд. 20 раз в секунду.
Второй поиск по части экрана. 100 раз сканируется за 1.7 секунды. 58 раз за секунду.
Кроме функции поиска еще отрабатывается дополнительный код...
Проверьте ваш результат.
Тут быстрее всего надо оптимизировать сам код скрипта... Больше без кода сказать не могу.
2) Это не является большой нагрузкой и в большинстве случаев обрабатывается быстро. Все зависит от того какое именно быстродействие надо. Обработка видео в реальном режиме?
3) Вопрос не ясен. Нужен код.
Самой первой оптимизацией при поиске изображений является ограничивание области поиска. Так же если известно заранее что есть только одно изображение, то первый параметр в findimage ставить в 1. Это для того что бы как нашлось изображение функция завершалась, а не продолжала скан экрана (все равно же больше не будет такого изображения).
Вот к примеру тест скрипт, который ищет вашу аваторку по части ее изображения.
Сохранить этот рисунок на диск С в .bmp:
Открыть эту страницу во весь экран браузера. Аватор должен быть виден.
Запускаем скрипт:
CODE:
int Image_0[28][15];loadimage (#Image_0[0][0], "C:\Image_0.bmp");
int t;
double t1;
int x, y;
int ex, ey, col;
int k, k1;
getdisplay(col, ex, ey);
sleep(1000);
k=0;k1=0;
t=gettime();
a: k1=k1+findimage(1, #Image_0[0][0], -1, #x, #y, 0, 0, ex, ey, -1);
k++;
if (k<100) goto a;
t1=gettime()-t;
messagebox("Весь экран: Поиск осуществлен 100 раз. Рисунок найден "+ format(k1) +" раз за "+ format(t1/1000) +" секунд.");
sleep(1000);
k=0;k1=0;
t=gettime();
a5: k1=k1+findimage(1, #Image_0[0][0], -1, #x, #y, 0, 0, 215, ey, -1);
k++;
if (k<100) goto a5;
t1=gettime()-t;
messagebox("Часть экрана: Поиск осуществлен 100 раз. Рисунок найден "+ format(k1) +" раз за "+ format(t1/1000) +" секунд.");
int t;
double t1;
int x, y;
int ex, ey, col;
int k, k1;
getdisplay(col, ex, ey);
sleep(1000);
k=0;k1=0;
t=gettime();
a: k1=k1+findimage(1, #Image_0[0][0], -1, #x, #y, 0, 0, ex, ey, -1);
k++;
if (k<100) goto a;
t1=gettime()-t;
messagebox("Весь экран: Поиск осуществлен 100 раз. Рисунок найден "+ format(k1) +" раз за "+ format(t1/1000) +" секунд.");
sleep(1000);
k=0;k1=0;
t=gettime();
a5: k1=k1+findimage(1, #Image_0[0][0], -1, #x, #y, 0, 0, 215, ey, -1);
k++;
if (k<100) goto a5;
t1=gettime()-t;
messagebox("Часть экрана: Поиск осуществлен 100 раз. Рисунок найден "+ format(k1) +" раз за "+ format(t1/1000) +" секунд.");
Первый поиск происходит по всему экрану. На моем ноуте функция срабатывает 100 раз примерно за 5 секунд. 20 раз в секунду.
Второй поиск по части экрана. 100 раз сканируется за 1.7 секунды. 58 раз за секунду.
Кроме функции поиска еще отрабатывается дополнительный код...
Проверьте ваш результат.
Тут быстрее всего надо оптимизировать сам код скрипта... Больше без кода сказать не могу.
3. Stanislaw - 03 Ноября, 2014 - 12:50:01 - перейти к сообщению
Заметил в диспечере задач что как сам кибор так и запускные файлы занимают память от 100 до 300 мегабайт. Система ХР и 8.1 От размера скрипта не зависит-один из больших весил 100мб, всего в десяток строк 250мб. На что тратится? Картинки маленькие,данных почти нет.
4. Kibor - 03 Ноября, 2014 - 13:53:29 - перейти к сообщению
движок много ест