BarakudaX777

Зарегистрирован: 07.07.2014 Сообщения: 26 Откуда: ООО "ГЕОГРАД" г. Орск
|
Добавлено: Чт 28 Май 2015 23:30 Заголовок сообщения: Подскажите советом по оптимизации создания объектов |
|
|
Делаю конвертер из MapInfo в Ингео. В принципе конвертатор почти закончил, но интересует следующее:
Как увеличить скорости обработки.
Перед добавлением объектов получаю выборку объектов, и в цикле создаю новые объекты и заполняю семантическую информацию.
Код: | t;
Objects:=Ingeo.ActiveDb.MapObjects;
for i := 0 to ObjCount - 1 do begin
//Действия по созданию объекта и занесению информации
end; |
Если в цикле выполнять Objects.UpdateChanges то обработка выполняется намного медленнее, но тогда отлавливаются все ошибки. а если выполнять по окончании обработки всех новых объектов то в случае возникновении ошибок вся работа отменяется. Конвертируются очень большие объемы,и получается что любая ошибка полностью не отлавливается до окончании обработки и в случае если размер полей превысил допустимое или несоответствия типов вся работа шла в пустую. Хоть и предусмотрел програмное усечение вносимой информации по размеру поля, но все равно, получить ошибку спустя пару часов - напрягает... может есть описания исключений, которые могут срабатывать при UpdateChanges
Вопрос 1. Каким образом можно ускорить применение изменений? Может стоит сохранение объектов выносить в отдельный поток для асинхронной работы?... Кто что посоветует по этому поводу...
Вопрос 2. Какие хитрости для ускорения обработки используете вы при динамическом создании или удалении объектов через API Ingeo? Что можете посоветовать!
Перед началом создания объектов через апи, скрываю видимости всех слоев, это привело к увеличению производительности раз в 5.
Application.ProcessMessages выполняю для каждого 10 объекта,чтобы программа могла отрисовать процесс конвертации.
Есть ли возможность полностью в Ингео отключить перерисовку? Я думаю это значительно бы ускорило процесс. Пока в режиме сохранения изменений по окончании скорость достигает приблизительно 10 объектов в секунду. а при сохранении изменений для каждого объекта около 3 объектов в секунду... достаточно некчемный вариант... |
|