Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Подскажите советом по оптимизации создания объектов

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 объектов в секунду... достаточно некчемный вариант...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Пт 05 Июн 2015 22:22    Заголовок сообщения: Ответить с цитатой

Самый быстрый способ: сначала отдельно создать только графику, потом внести семантику.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB