по задаче требуется обновить объекты на большой карте (>>20тыс. объектов) по каждому объекту нужно обновить данные в семантике. объект обновляется так: mapobj := ищется объект по key ищется индекс семантике по коду в mapobj обновляется значение семантике в mapobj mapobj.commit;
к функционалу претензий нет - все работает, но очень медленно. есть ли групповая операция сохранения данных в карте, а не поштучное сохранение, по аналогии - транзакции в бд?
Пакет операций лучше выполнять в отдельной явно открываемой транзакции. Когда выполняется сохранение объекта, а явно открытой транзакции нет, для каждого сохранения объекта будет открываться и закрываться неявная транзакция, что работает медленнее. Поэтому для ускорения пакетных операций рекомендуется управлять транзакциями самостоятельно - то есть явно открыть транзакцию вначале (mapLogCreateAction) и закрыть по окончании (mapLogCommitAction).
Еще вариант - отключить ведение журнала транзакций (mapLogAccess). Но это не позволит выполнить отмену операций.
Также позволяет ускорить работу открытие данных в Вашем приложении в монопольном доступе - mapSetExclusiveAccess (установить режим до открытия данных).
Если нужно выполнить изменение каждого (или почти каждого) объекта карты, то лучше не выполнять поиск объекта по Key, а просто перебрать по порядковому номеру (mapReadObjectByNumberEx либо TMapObj.ReadObjectByNumberEx) все объекты карты от первого (c 1) до последнего (mapGetSiteObjectCount или TMapSite.SiteObjectCount).
Денис, здравствуйте при вызове mapLogAccess( mapview.handle, 0, $10000) возникает access violation в какой то dll лог дать не могу. из-за срочности работы пришлось вернуть все обратно.