Pregunta

Escribir aplicaciones nativas rápidas, con llamadas API y etc., en un lenguaje de programación multiplataforma moderno como C # sería increíble, ¿no? Por ejemplo, si desea escribir una utilidad simple para ayudar a la gente de TI a instalar cosas, ¿cuáles no necesitarían otros componentes, en un lenguaje de programación fácil y moderno? o si quieres escribir un juego en 3D, debería ser rápido, y JIT lo haría más lento ...

¿Por qué, por qué no es posible? ¿Por qué no hay lenguajes de programación modernos nativos para estas cosas?

¿Fue útil?

Solución

C # y .Net son código nativo. Creo que malinterpretas al JITter. No es una máquina virtual. Un programa de C # se compila a un código completamente nativo antes de que se ejecute cualquiera de ellos.

Ahora, el " que necesita otros componentes " La parte es una preocupación. Dale tiempo, sin embargo. Será difícil encontrar una instalación de Windows en estos días sin al menos .Net 2.0, e incluso un par de distribuciones de linux principales incluyen mono de la caja.

Otros consejos

No asuma que el JIT hace las cosas más lentas. El JIT puede optimizar para la computadora exacta que ejecuta la aplicación en lugar de una computadora genérica como una 386 o Pentium. Incluso puede tomar mejores decisiones de compensación de velocidad / memoria al generar código porque sabe exactamente qué hay disponible. Y si JIT aún hace las cosas más lentas, puedes NGEN para que JIT se haga de antemano.

Como prueba de esto, considere que Quake se ha portado al CLR un par de veces, y en mis pruebas personales, los cuadros por segundo han sido más rápidos cuando Quake se ejecuta en el CLR aproximadamente la mitad de las veces Lo demo.

Se ha demostrado que los programas .NET compilados se ejecutan tan rápido como C. Si desea que sea ultra delgado, escríbalo en ensamblador para su procesador nativo.

Puede usar la herramienta Microsoft NGEN.EXE para crear una imagen nativa de un ensamblado .NET. Consulte documentación de MSDN NGEN . Microsoft ya pensó en lo que está haciendo aquí.

Microsoft también hace ILMERGE. Herramienta EXE para fusionar varios archivos de ensamblaje en uno. Esto también podría limitar la optimización y la velocidad.

Como nota al margen, Mono tiene una compilación anticipada completa, eliminando el tiempo de ejecución. (Creo que es así como se escapan corriendo en iPhone, lo que prohíbe cualquier JIT).

Entonces, ¿esto significa que podríamos compilar completamente y vincular un programa C # usando (.NET) llamadas de .NET a un EXE independiente que se ejecutaría sin la instalación de .NET?

FYI: la verificación de un estado de servidores de unos 5000 servidores reveló unos 200 sin siquiera .NET 2.0.

Esto causa problemas para el código que debe ejecutarse en " todas las instancias de Windows " ;. Con .NET 4.0+ sin incluir 2.0, esto empeora porque las máquinas nuevas y antiguas de Windows pueden no tener el "derecho" .NET

hay, C. C se puede usar para escribir cualquier aplicación, ¡¡¡nunca !!!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top