Собственный C / C ++ может быть вызван с помощью PInvoke (DllImport) из C # или с помощью кода C ++ / CLI (.NET C ++) или через COM.Это называется interop.
PInvoke требует предоставления собственного кода через DllExport.
C ++ / CLI и собственный код можно поместить в одну и ту же DLL или даже файл cpp.
C # (.NET) код компилируется в MSIL, который транслируется при первом доступе к машинному коду (JIT).Он может быть сохранен в расширенном GAC, уже переведенном в машинный код, однако это только улучшает первый доступ.
Эквивалентный код C # для кода C должен выполнять то же самое.C # даже разрешает указатели в небезопасном коде, но не с шаблонами, как в C ++.
MSIL даже имеет оптимизацию, позволяющую повысить производительность в случае купольных камер.
Я видел, как демонстрации параллельных вычислений выполнялись быстрееC # чем эквивалент C ++.
Если вы спроектируете свой C # с умом, производительность будет хорошей.То же самое относится к родному C / C ++.