C ++ / CLI также должен будет выполнить маршалинг.
Как и все проблемы с производительностью, вы должны измерить и оптимизировать. Вы уверены, что C # не будет достаточно быстрым для ваших целей? Не стоит недооценивать оптимизацию, которую собирается выполнять JIT-компилятор. Не спекулируйте на накладных расходах языковой реализации исключительно для того, чтобы управлять без попыток. Если этого недостаточно, рассматривали ли вы небезопасный код C # (с указателями) перед тем, как попробовать неуправляемый код?
Что касается профиля производительности C ++ / CLI, то он действительно зависит от того, как он используется. Если вы компилируете в управляемый код (CIL) с помощью (/clr:pure
), он не будет сильно отличаться от C #. Нативные функции C ++ в C ++ / CLI будут иметь характеристики производительности, аналогичные простым C ++. Передача объектов между собственной средой C ++ и средой CLI потребует некоторых затрат.