Binärcode
-
Wie kann mann aus dem IL Code eigentlich Binärcode kompilieren. Diese Anwendung müsste doch um einiges schneller laufen und könnte womöglich schon gleich für SSE/3DNow Befehle kompiliert werden?
-
Wird doch schon automatisch beim starten deines Programms vom JIT Compiler gemacht. Du brauchst da nicht mehr von IL nach x86 compilieren.
Das ist doch gerade der Vorteil: Du hast einen platformunabhängigen IL Code der dann individuell beim Start an deine Plattform angepasst wird, egal ob mit SSE,3DNow,... oder nicht . Du brauchst keine speziellen Anpassungen wie in C++ wo du für jede Architektur achten musst ob 3DNow und Co. untestützt wird oder nicht.
-
Der Sinn der Frage war, dass man so dann ja auch die Anwendungen auf PCs ohne das .Net Framework laufen lassen kann. Ein weiterer Grund ist, dass durch das "jitten" die Ausführungsgeschwindigkeit sinkt, man sie also steigern kann, wenn man echten Binärcode erzeugt.
-
Wieso sollte die Ausführungsgeschwindigkeit sinken? Man hat höchstens eine kleine Verzögerung beim 1. Start.
-
Grundsätzlich kann ge"jit"teter Code (theoretisch) genau so schnell sein wie nativer, wenn man mal von einer kleinen Verzögerung am Anfang absieht. Das hat ja interpreter schon gesagt.
Eine .net Anwendung läuft nur mit dem Framework zusammen. Es reicht ja nicht aus einfach von IL nach x68 zu konvertieren. Deine Anwendung ist auf Assemblies im GAC angewiesen. Du kannst nur auf zukünftige Versionen von Windows hoffen, wo das Framework standardmäßig mitgelifert wird (Ist bei Longhorn ja der fall) oder du musst deinen User auffordern es zu installieren.
Letzteres ist sowiso ratsam, da immer mehr Anwendungen auf .net basieren werden. Selbst das neue Treiberpaket von ATI setzt schon eine .net Framework Installation vorraus.