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

производительность модуля на c#

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
nawakster



Зарегистрирован: 17.06.2008
Сообщения: 59

СообщениеДобавлено: Чт 25 Июл 2013 13:57    Заголовок сообщения: производительность модуля на c# Ответить с цитатой

Добрый день.
Как добиться максимальной производительности?
сейчас модуль тупо подключается через GetActiveObject.

Простые операции на ура. А вот перебор объектов уже заставляет модуль конкретно задуматься.

Можно, конечно, через
Михаил Власов писал(а):

  1. Сделать COM-объект на .Net.
  2. В ИнГео сделать программный модуль, который создает и дергает методы COM-объекта.
  3. В программном модуле добавить скриптовые обработчики событий и из них дерагать реализацию из 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    Заголовок сообщения: Ответить с цитатой

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

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


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