belovkirill
Новичок
- Сообщения
- 23
- Репутация
- 0
Здравствуйте. Я столкнулся с такой проблемой. Для примера код AutoIt
Код перебирает все пиксели слева направо и сверху вниз и если на экране попадается пиксель черно цвета - появляется сообщение о том что он нашелся. Для того чтобы проверить как быстро это происходить я открываю пустое изображение, на котором только белый цвет и в правом нижнем углу стоит черная точка. Координаты точки (1200,900). Программа очень простая. Я запускал код на выполнение на компьютере с операционной системой Windows XP, 1Гб оперативной памяти, процессор "AMD Athlon(tm) 64 Dual Core Processor 3800+". Требуемый пиксель нашелся за 11 секунд. Т.е. за это время произошло примерно 800000 операций взятия цвета, сравнения и увеличения значений итераторов. Далее этот же код я запускал на компьютере с операционной системой Windows 7 x64, 4Гб оперативной памяти, процессором intel core i3-3240 CPU. Однако теперь область поиска была не 1000x800 а 50x50, то есть пиксель находился в координате (250,250) а поиск по X происходил от 200 до 251 и по Y от 200 до 251. В сумме получается около 2500 операций выполнения функции PixelGetColor(), операций сравнения и увеличения значений итераторов. Такой поиск занял 52 секунды. То есть если проводить поиск в той же области что и на первом компьютере то поиск пикселя в правом нижнем углу занял бы примерно 4 часа. Вопрос почему на втором компьютере параметры которого намного лучше поиск происходит в 1500 раз медленнее?
Код:
For $x=200 To 1201 Step 1
For $y=100 To 901 Step 1
$pixelgetcolor=PixelGetColor($x,$y)
If $pixelgetcolor=0x000000 Then
MsgBox(0,'','конец поиска')
EndIf
Next
Next
Код перебирает все пиксели слева направо и сверху вниз и если на экране попадается пиксель черно цвета - появляется сообщение о том что он нашелся. Для того чтобы проверить как быстро это происходить я открываю пустое изображение, на котором только белый цвет и в правом нижнем углу стоит черная точка. Координаты точки (1200,900). Программа очень простая. Я запускал код на выполнение на компьютере с операционной системой Windows XP, 1Гб оперативной памяти, процессор "AMD Athlon(tm) 64 Dual Core Processor 3800+". Требуемый пиксель нашелся за 11 секунд. Т.е. за это время произошло примерно 800000 операций взятия цвета, сравнения и увеличения значений итераторов. Далее этот же код я запускал на компьютере с операционной системой Windows 7 x64, 4Гб оперативной памяти, процессором intel core i3-3240 CPU. Однако теперь область поиска была не 1000x800 а 50x50, то есть пиксель находился в координате (250,250) а поиск по X происходил от 200 до 251 и по Y от 200 до 251. В сумме получается около 2500 операций выполнения функции PixelGetColor(), операций сравнения и увеличения значений итераторов. Такой поиск занял 52 секунды. То есть если проводить поиск в той же области что и на первом компьютере то поиск пикселя в правом нижнем углу занял бы примерно 4 часа. Вопрос почему на втором компьютере параметры которого намного лучше поиск происходит в 1500 раз медленнее?