IL2CPP.exe es una utilidad de Unity para convertir código C# IL a C++. Mi pregunta es: ¿se puede usar este ejecutable fuera del entorno de desarrollo de juegos de Unity como una herramienta de propósito general para convertir cualquier aplicación .NET (no solo juegos) en un ejecutable nativo de alto rendimiento?
Aunque sé algo de C++, sin duda sería bueno poder escribir todo tipo de programas en un lenguaje con el que me sienta cómodo y con fluidez (C#)... ya sean DAW de producción de audio/video/música o Herramientas forenses/de seguridad a nivel de sistema operativo o plataformas de aprendizaje automático o cualquier otra cosa que requiera muchos recursos... y sepa que se ejecutarán tan eficientemente como una aplicación escrita en C++ puro.
IL2CPP está estrechamente conectado con el entorno de Unity y no es posible usarlo fuera de Unity. Necesitaría escribir su propio convertidor (?) Para hacer tal cosa.
IL2CPP no hace magia en términos de mejora del rendimiento. La comparación de C++ con C# con el código IL2CPP debería proporcionar (casi, más a continuación) ningún beneficio de rendimiento.
IL2CPP es eficaz en comparación con el código C# escrito para Unity específicamente por algunas razones que no tienen nada que ver con C++.
Por qué Unity es único y necesita IL2CPP:
Entonces, ¿por qué IL2CPP?
¿Vale la pena convertir otro C# a C++?
¡No! Compare cualquier código C# arbitrario y optimizado que haya sido precompilado por AOT con el C++ (moderno). ¡Deberías obtener el mismo rendimiento! Idéntico diría yo.
C# está compilado en IL (Lenguaje Intermedio) que, como sugiere el nombre, es Intermedio. Se convierte en tiempo de ejecución a código binario nativo (solo cuando es necesario), en eso se compila C++. Puede forzar esta conversión omitiendo la generación de IL ejecutando la compilación Ahead of Time (AOT).
Lo ÚNICO que su código C# tendrá menos rendimiento es cuando abusa de la capacidad de GC para limpiar después de usted.