![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Elite
![]() |
![]() Hallo,
eine Frage. Wird C#-Sourcecode compiliert oder interpretiert? Andersrum gefragt. Wird der Sourcecode wie bei C++ compiliert und man erhält dann eine ausführbare Binärdatei oder wird vom Sourcecode eine Art Bytecode erstellt, wie bei Java, wo dann dieser Bytecode mittels Runtime interpretiert wird?
____________________________________
lg, cenus ------------------ §1 Alle Tipps und Tricks sind ohne Garantie auf Korrektheit und Vollstaendigkeit. §2 Es wird von mir keine Haftung fuer etwaige entstandene Schaeden uebernommen. §3 Des weiteren distanziere ich mich von den von mir bekanntgegebenen Urls und Websites. ------------------ Schaetze das wars, oder habe ich was uebersehen? ![]() |
![]() |
![]() |
![]() |
#2 |
Abonnent
![]() |
![]() Also ich bin jetzt kein Spezialist auf dem Gebiet, aber im Visual Studio kompiliere ich eigentlich alles, ob es jetzt eine Windows Applikation ist oder zB eine Webanwendung.
Aber ich schätz bei einer Webanwendung ist das eher so eine Art Zwischencode der vom IIS interpretiert wird.
____________________________________
- Nichts ist unmöglich - |
![]() |
![]() |
![]() |
#3 |
bitte Mailadresse prüfen!
Registriert seit: 17.03.2002
Beiträge: 198
|
![]() .NET wird "just in time" compiliert.
D.h. beim ersten Aufruf einer Funktion wird diese compiliert. Vorteil beim "jitten" ist, daß sich der Compiler am aktuell verfügbaren Prozessor orientieren kann, deswegen wäre es theoretisch auch denkbar, daß .NET (oder auch Java) bei bestimmten Aufgabenstellungen schneller als nativ compilierter Code ist. Nachteil ist allerdings, daß der erste Aufruf langsam ist, da ja erst compiliert werden muß. Es gibt auch per "ngen" die Möglichkeit, die IL vorzukompilieren, sodaß dieser erste Overhead entfällt. Das Einzige, was wirklich fehlt, ist ein Linker, der wirklich nur die Funktionen des Frameworks hinzufügt, die auch verwendet werden. D.h. du mußt immer das komplette Framework mitausliefern. C# ist also eher vergleichbar mit Java als mit C++. Nur daß es plattformabhängig ist... (jaja, Mono, trotzdem) |
![]() |
![]() |
![]() |
#4 |
Senior Member
![]() Registriert seit: 15.09.2005
Alter: 38
Beiträge: 131
|
![]() Also Kurz gesagt wenn du ein C# Programm erstellst wird die dll usw. in der Intermedia Language kompeliert. Der Vorteil ist dass jede .Net sprach in diese IL kompeliert wird und es so möglich ist dll's aus unterschieldichen sprach zu verwenden. der nachteil ist eben dass es nicht so schnell ist.
wenn du das programm ausführst wird die il vom just-in-time compiller, der im .Net Framework enthalten ist, in binären code übersetzt und das programm wird ausgeführt. ich hoffe ich konnte dir helfen.
____________________________________
Da sollte was witziges oder so stehen. hm... mir fällt aber nix ein. |
![]() |
![]() |
![]() |
#5 |
Elite
![]() |
![]() Danke für die Informationen!
____________________________________
lg, cenus ------------------ §1 Alle Tipps und Tricks sind ohne Garantie auf Korrektheit und Vollstaendigkeit. §2 Es wird von mir keine Haftung fuer etwaige entstandene Schaeden uebernommen. §3 Des weiteren distanziere ich mich von den von mir bekanntgegebenen Urls und Websites. ------------------ Schaetze das wars, oder habe ich was uebersehen? ![]() |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 09.07.2000
Ort: wien
Beiträge: 275
|
![]() wird das compilierungsergebnis irgendwo in einer datei gespeichert ? (die müsste ja dann auf rechnern mit gleicher cpu auch funktionieren)
____________________________________
2 pi or not 2 pi |
![]() |
![]() |
![]() |
#7 |
bitte Mailadresse prüfen!
Registriert seit: 17.03.2002
Beiträge: 198
|
![]() MSDN:
"The Native Image Generator creates a native image from a managed assembly and installs it into the native image cache on the local computer. The native image cache is a reserved area of the global assembly cache. Once you create a native image for an assembly, the runtime automatically uses that native image each time it runs the assembly. You do not have to perform any additional procedures to cause the runtime to use a native image. Running Ngen.exe on an assembly allows the assembly to load and execute faster, because it restores code and data structures from the native image cache rather than generating them dynamically." Hab' das Ganze in der Praxis aber noch nicht ausprobiert oder benötigt. |
![]() |
![]() |
![]() |
#8 |
Veteran
![]() Registriert seit: 09.07.2000
Ort: wien
Beiträge: 275
|
![]() thx - und bis wann testest du es aus?
![]()
____________________________________
2 pi or not 2 pi |
![]() |
![]() |
![]() |
#9 |
bitte Mailadresse prüfen!
Registriert seit: 17.03.2002
Beiträge: 198
|
![]() Nächstes Jahr
![]() |
![]() |
![]() |
![]() |
#10 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi,
ich würde mal sagen, dass man in 90% aller fälle, die vorkompilierung mit ngen nicht benötigt. Programmaufruf ist ja nur beim 1. ausführen der betroffenen funktion langsamer, weil von IL in maschinencode übersetzt wird, dann nicht mehr. @cenus: schau dir mal eine mit .net erzeugte .exe Datei im binäreditor an, was du siehst, ist IL code. (schaut teilw. ähnlich wie assembler aus) -> wahre freaks schreiben ihre programme dann gleich in IL ![]() programme wie z.B. .net-reflector machen aus dem IL code wieder c#. so kannst du dir anschaun, wie microsoft die funktionalitäten ihrer assemblies programmiert hat. fg -hannes |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|