Вызов методя из dll(com clr c++) из программы на C# происходит катострофиески медленно, порядка 0,3 милисекунды при том что сам метод отрабатывает за 0,1 милисекунды. Куда деваются 0,3 милисекунды и как ускорить вывов этого метода?
Дополнение автора от 20.01.12 17:51:25
ответы типа «C# медленный » не принмаются, также можно сказать что с++ убог и не логичен, а асм вообще для извращенцев, это не решит проблему.
с# довольно «медленный» язык, у него есть свой сборщик мусора. Поэтому всё зависит от того как память выделяется под вызов этого метода. Для работы в масштабе реального времени C# не подходит(особенно если вызывает методы из DLL не с#)
Добрый день. Меня заинтересовал ваш ответ "с# довольно «медленный» язык, у него есть свой сборщик мусора. Поэтому всё зависит от того как памят..." на вопрос http://www.liveexpert.org/topic/view/185163-podklyuchenie-dll. Можно с вами обсудить этот ответ?
при вызове внешних функций и управляемого кода (в частности C#) просходит маршалинг данных — управлиемое преобразование данны, подготовка копии данных для обработки внешним кодом, преобразование возвращаемых данных, выделение и освобождение памяти для временных копий на обеих фазах
собственно на нем и происходит потеря времени, тем более значительные, чем обьемнее передаваемые данны и чем сложнее их структура. эти потери времени могут быть пренебрежительно малы в случае когда вызываемые функции выполняют значительно больший обьем обработки
ps:
1 — маршалинг не имеет ни какого отношения к механизму фоновой сборки мусора