Announcement

Collapse
No announcement yet.

wann wird IL-Code kompiliert?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • wann wird IL-Code kompiliert?

    Ich hab da mal eine Grndsätzliche Frage. Bei .Net wird zur Laufzeit der IL-Code durch den JIT-Compiler kompiliert. Wenn Code Teile einmal kopiliert wurden, liegen sie kompiliert vor und werden direkt ausgeführt. Bis hierhin ist alles klar.

    Wann wird durch den JIT-Compiler wieder neu kompiliert? Ich meine mal gehört zu haben, dass der IL-Code nur neu compiliert wird, wenn ich eine neue Assembly nehme. Also nicht nach jedem Programmstart oder Betriebssystemneustart. Kann mich da mal jemand aufklären? Gibts da vielleicht Unterschiede zwischen den Versionen 1.0 bis 3.5?

    Grüße
    Till

  • #2
    Hallo,

    der JITer kompiliert den IL-Code jedesmal wenn dieser benötigt wird. Einmal kompilierter IL-Code wird dann im RAM als Maschinencode gehalten bis entweder der JITer diesen durch eine seiner Meinung nach bessere Variante ersetzt oder das Programm beendet wird.
    D.h. bei jedem Programmstart wird der IL-Code zum Maschinencode kompiliert.

    Die Funktionsweise des JITer lässt sich am besten als dynamsiche Kompilierung zur Laufzeit vorstellen. Es wird alles kompiliert was demnächst gebraucht wird. Dabei werden div. Optimierungen vorgenommen. Deshalb wird auch nicht zum Programmstart gleich alles kompiliert sonder je nach Bedarf. Der Vorteil (zumindest in der Theorie) ist, dass die Kompilierung den aktuellen Programmverlauf bei der Optimierung mit berücksichten kann (zB Variablen werden Konstanten behandelt, Schleifen-Aufrollen, ...)

    Wenn du den Maschinencode behalten willst muss ein natives Image mittelsn NGEN erstellt werden.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Moin,
      der letzte Punkt, welcher von gfoil angesprochen wurde wird auch als Vorkompilierung bezeichnet. Hier findest du weitere Infos dazu:
      http://msdn.microsoft.com/de-de/library/bb978898.aspx

      Unter http://openbook.galileocomputing.de/...arp_01_002.htm
      findet sich Abbildung 1.1 Dort ist mal der Ablauf von Quellcode zu nativem Code gezeigt.
      Generell ist das Kapitel nicht verkehrt.

      Gruß,
      Matze

      Comment

      Working...
      X