| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Все просто. 
 
Спасибо) | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |