Является ли C ++ / CLI быстрее, чем C # - PullRequest
14 голосов
/ 21 августа 2009

C ++ / CLI быстрее, чем C #? В каком типе операций это быстрее?

Ответы [ 5 ]

14 голосов
/ 21 августа 2009

Не обязательно. Тем не менее, C ++ / CLI устраняет большую часть синтаксического сахара вокруг неэффективных способов выполнения действий, которые присутствуют в C # (например, бокс).

Кроме того, C ++ / CLI позволяет вам намного более чистое взаимодействие с неуправляемым кодом, фактически позволяя смешивать управляемый / неуправляемый код, что является критически важной для производительности средой.

EDIT:

См. Этот пост для некоторых различий: http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx

8 голосов
/ 21 августа 2009

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

3 голосов
/ 21 августа 2009

Ну, краткий ответ: нет . Зачем? Ссылочные типы в C ++ / CLI компилируются в MSIL, так же, как в C #.

Хорошая особенность C ++ / CLI (и длинный ответ) заключается в том, что вы можете легко вызывать нативный код, который (во многих случаях) работает быстрее. Тем не менее, если вы пишете собственный класс C ++ и ожидаете, что он будет выполняться изначально при вызове кем-то из управляемого класса, этот собственный класс C ++ должен быть скомпилирован без поддержки CLR ( этот вопрос посвящен тому, как сделай это).

2 голосов
/ 21 августа 2009

Любой управляемый код, написанный на C ++ / CLI, по существу будет точно таким же, как и эквивалентный C #, при условии точности компилятора, поскольку оба они в конечном итоге станут инструкциями на промежуточном языке. Тем не менее, C ++ / CLI позволяет легко смешивать неуправляемый код с управляемой частью, что может обеспечить значительные преимущества в скорости при хорошей оптимизации.

1 голос
/ 21 августа 2009

Поскольку оба эти языка .NET скомпилированы в один и тот же байт-код, который, в свою очередь, запускается на одной и той же виртуальной машине, я бы сказал, что нет.

C ++ / CLI действительно предназначен только для обеспечения языкового взаимодействия между .NET и C ++.

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