Производительность передачи данных между сборками .Net и COM - PullRequest
3 голосов
/ 22 февраля 2010

Я нахожусь в процессе миграции устаревшего приложения VB6 на .Net, однако, поскольку оно является важным бизнес-критическим приложением, оно выполняется по частям.

В интересах улучшения производительности есть один метод, который многократно срабатывает в течение жизни приложения, и я хотел переписать его в .Net (C #), чтобы посмотреть, можно ли улучшить время выполнения.

Рассматриваемый метод манипулирует наборами записей ADODB. Есть ли какие-либо проблемы с производительностью, о которых мне следует знать или принимать во внимание, поскольку эти наборы записей будут передаваться в VB6 и из него через COM-взаимодействие?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2010

Я не сделал ничего конкретного по этому поводу, но из моего опыта работы с Interop .NET очень хорошо оптимизирован, и обычно при каждом вызове взаимодействия с Win API или COM вводятся нано-секунды, что незначительно. ADO Recordset будет обрабатываться так же, как и любые другие COM-объекты, созданные в неуправляемой куче, и под капотом находится адрес IntPtr, с которым они имеют дело.

Собственная библиотека фреймворка .NET и ее сборщик мусора намного лучше, чем в VB. Я полагаю, что переписывание некоторого старого кода VB в .NET может дать вам прирост производительности, по крайней мере, достаточный для того, чтобы игнорировать издержки взаимодействия. Лучше всего, если вы оснастите себя инструментом профилирования и будете непрерывно следить за производительностью по мере миграции реализации по частям.

1 голос
/ 22 февраля 2010

К сожалению, я очень сомневаюсь, что кто-нибудь сможет дать вам любую информацию о вашей ситуации, которую вы еще не знаете. Вы упомянули, что вы передаете наборы записей в и из VB6, что, как я могу предположить, означает, что вы используете старый школьный объект ADO COM из .Net.

Ик.

Итак, предполагая, что другого пути нет, я могу только заключить, что понятия не имею, с какими техническими трудностями вы столкнетесь, что заставит вас совершить такое злодеяние. Я могу просто пожелать вам удачи.

...