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