2009-08-21 42 views

Respuesta

14

No necesariamente. Sin embargo, C++/CLI quita gran parte del azúcar sintáctico en torno a las formas no efectivas de hacer las cosas que están presentes en C# (por ejemplo, el boxeo).

Además, C++/CLI le permite una interoperabilidad mucho más limpia con código no administrado, realmente le permite mezclar código administrado/no administrado, que es un entorno de rendimiento crucial que puede ser beneficioso.

EDIT:

Ver este post para algunas de las diferencias: http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx

+0

Muy buen punto sobre la falta del azúcar sintáctico de C#. –

+0

Gracias, una forma diferente de ver las cosas, pero supongo que es un beneficio de rendimiento, ya que te ayuda a escribir el código de rendimiento – LorenVS

+0

Por otra parte, C++/CLI introduce azúcar sintáctica propia para cosas como imitar asignación de pila y RAII a través de ' Eliminar llamadas'. –

8

Dado que ambos se ejecutan en el .NET framework, diría que cualquier diferencia de rendimiento sería insignificante. Cualquier diferencia se reducirá a cuán bien funcionan los compiladores que está utilizando.

1

Dado que ambos lenguajes .NET se compilan en el mismo código de bytes que a su vez se ejecuta en la misma máquina virtual, diría en general que no.

C++/CLI solo tiene la intención de proporcionar interoperabilidad de lenguaje entre .NET y C++.

+3

C++/CLI es una lengua de pleno derecho en su propio derecho. Tiene algunas ventajas sobre C#, incluso en un entorno de compilación puro/clr: –

+0

Creo que se dedicó mucho esfuerzo en este producto. Es difícil pensar que solo fue pensado para operaciones de interoperabilidad. –

1

Cualquier código administrado escrito en C++/CLI será esencialmente el mismo que el equivalente C#, suponiendo precisión del compilador, ya que ambos terminarán como instrucciones de lenguaje intermedio. Sin embargo, C++/CLI hace que sea fácil mezclar código no administrado con la porción administrada, lo que puede proporcionar considerables beneficios de velocidad si está bien optimizado.

3

Bien, la respuesta corta es no. ¿Por qué? Los tipos de referencia en C++/CLI se compilan en MSIL, lo mismo que en C#.

Lo bueno de C++/CLI (y la respuesta larga), sin embargo, es que puede llamar fácilmente al código nativo, que (en muchos casos) es más rápido. Dicho esto, si escribe una clase C++ nativa y espera que se ejecute de forma nativa cuando alguien la llama en una clase administrada, esa clase nativa de C++ debe compilarse sin soporte de CLR (this question va a cómo hacerlo).

Cuestiones relacionadas