Страница 2 из 22

Re: GeoCacher

СообщениеДобавлено: 27 май 2009, 18:25
zed
Интересная вещь, начал замерять скорость выполнения функции... у меня оптимизированный вариант выполняется дольше, чем исходный.
Исходный - ~630 милисек
Оптимизированный - 840 :shock:
Тестировал при помощи AQTime (perfomance -> Elapsed Time), вот построчная задержка:
3.jpg

4.jpg

Re: GeoCacher

СообщениеДобавлено: 27 май 2009, 20:43
feya
ХЗ, я тестил на реальной программе.
Так и не заставили работать ф-ю?

Re: GeoCacher

СообщениеДобавлено: 27 май 2009, 21:12
zed
Неа, видимо, всё-таки поток виноват... кароч, дело тёмное, а ввиду теста на быстродействие, как-то и желание рыть пропало. Отложу в долгий ящик, мож. потом разберусь.

Re: GeoCacher

СообщениеДобавлено: 27 май 2009, 21:37
feya
zed
Печально. Потоки здесь точно не причем, у меня подобные операции с битмапами идут при склейке, в потоках. Это очень распространенный способ работы с битмапом.

Re: GeoCacher

СообщениеДобавлено: 27 май 2009, 21:38
feya
может выложиш какойнибудь самодостаточный кусок кода, я бы поковырял.

Re: GeoCacher

СообщениеДобавлено: 27 май 2009, 23:57
zed
feya писал(а):может выложиш какойнибудь самодостаточный кусок кода, я бы поковырял.

Вот, вычленил полностью код, отвечающий за создание тайлов + прикрутил поток (примерно так, как это у меня работает). Компилил в делфи 2007, никаких сторонних компонентов не надо... ну, кроме инди.
Вся работа (и, видимо, траблы) сосредоточены в модуле ImgMaker.pas - его я не менял абсолютно, как используется в GC, в таком же виде он и здесь. Скорость выполнения функций, по-прежнему низка и не в пользу оптимизированного варианта.

Для теста я взял первый попавшийся тайл GE, и X,Y которые используются при генерации, не соответствуют координатам этого тайла, но на работу алгоритма это никак не влияет (качество полученной картинки, в данном случае, нас не интересует - лишь бы небыло черезполосицы).

P.S. Потоки действительно оказались не при чём, посему убрал их...

Re: GeoCacher

СообщениеДобавлено: 28 май 2009, 12:46
feya
Понятно в чем проблема, у вас на битмапе формат пиксела 32 бита.

Re: GeoCacher

СообщениеДобавлено: 28 май 2009, 12:49
feya
Поставьтек после bitmap:=TBitmap.Create; - bitmap.PixelFormat:=pf24bit;

Re: GeoCacher

СообщениеДобавлено: 28 май 2009, 13:19
zed
feya писал(а):Поставьтек после bitmap:=TBitmap.Create; - bitmap.PixelFormat:=pf24bit;

Действительно заработало! И оптимизированный вариант стал, как и положено, занимать всего единицы милисекунд. Спасибо.

Re: GeoCacher

СообщениеДобавлено: 28 май 2009, 14:00
feya
Пожалуйста.
Ждем обновленную версию GC)