Вопросы производительности C ++ / CLI в смешанном режиме - лучшие практики - PullRequest
1 голос
/ 24 октября 2010

У меня есть библиотека C ++ / CLI, которая вызывает много собственных методов C ++.Я прочитал много потоков, утверждая, что вы не должны смешивать управляемый и неуправляемый код.Я не смог найти ничего, что говорит о том, как избежать этих переключателей и почему это приведет к снижению производительности.Может кто-нибудь поделиться передовым опытом.

1 Ответ

3 голосов
/ 24 октября 2010

Единственная причина использования C ++ / CLI - поддержка смешанного управляемого и собственного кода. Если все управляется, используйте C # или VB, если все является родным, используйте C или C ++. Или какой язык вы предпочитаете. Ясно, что избегать смешивания бессмысленно.

Существует небольшое количество накладных расходов при переходе от управляемого к неуправляемому. Компилятор C ++ / CLI автоматически генерирует часть машинного кода, который помещает «cookie» в стек, предназначенный для предотвращения грубого сброса сборщиком мусора фреймов неуправляемого стека и неверной интерпретации указателей на этом фрейме как ссылок на управляемые объекты. Стоит около 7 наносекунд, дай или возьми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...