Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
nawakster
Зарегистрирован: 17.06.2008 Сообщения: 59
|
Добавлено: Чт 25 Июл 2013 13:57 Заголовок сообщения: производительность модуля на c# |
|
|
Добрый день.
Как добиться максимальной производительности?
сейчас модуль тупо подключается через GetActiveObject.
Простые операции на ура. А вот перебор объектов уже заставляет модуль конкретно задуматься.
Можно, конечно, через
Михаил Власов писал(а): |
- Сделать COM-объект на .Net.
- В ИнГео сделать программный модуль, который создает и дергает методы COM-объекта.
- В программном модуле добавить скриптовые обработчики событий и из них дерагать реализацию из COM-объекта.
|
Вынесение части кода в inm ускорит работу, но хотелось бы одним шарпом отделаться. |
|
Вернуться к началу |
|
|
Михаил Власов
Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Чт 25 Июл 2013 15:47 Заголовок сообщения: Re: производительность модуля на c# |
|
|
nawakster писал(а): | Добрый день.
Как добиться максимальной производительности?
сейчас модуль тупо подключается через GetActiveObject.
Простые операции на ура. А вот перебор объектов уже заставляет модуль конкретно задуматься. |
Проблема в том, что когда вы дёргаете методы COM-объекта, размещенного в другом процессе, происходит межпроцессное взаимодействие - операция весьма накладная (с маршалингом, анмаршалингом, протоколом IPC и пр.).
Поэтому, с ростом количества межпроцессных вызовов, накладные расходы на сами вызовы начинают конкурировать со временем, затраченным на собственно полезные действия.
Когда же вы дёргаете методы COM-объекта, размещенного в том же самом процессе, накладные операции на вызов метода сопоставимы с обычным вызовом функции в рамках одной программы.
Единственный способ сократить время обработки - перенос внешней логики в рамки процесса InGeo.exe, то есть написание внедряемого COM-модуля.
К сожалению, других вариантов нет. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
|
nawakster
Зарегистрирован: 17.06.2008 Сообщения: 59
|
Добавлено: Чт 25 Июл 2013 16:56 Заголовок сообщения: |
|
|
Спасибо за ответ.
Пример реализации нашел двумя темами ниже.
Расскажите, пожалуйста, как происходит процесс отладки DLL в Visual Studio и Ингео?
Перед каждой компиляцией dll вручную выгружать модуль inm из ингео, а потом запускать? или это можно как-то автоматизировать
Как дебажить с брекпоинтами? |
|
Вернуться к началу |
|
|
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Чт 25 Июл 2013 17:16 Заголовок сообщения: |
|
|
В студии выбираете приложение для отладки Ingeo.exe, в студии же жмёте запустить, дальше запускается ингео и делает всё как обычно до тех пор пока ваша бряка таки не сработает. _________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
|
nawakster
Зарегистрирован: 17.06.2008 Сообщения: 59
|
Добавлено: Чт 25 Июл 2013 17:26 Заголовок сообщения: |
|
|
Все просто.
Спасибо) |
|
Вернуться к началу |
|
|
|