WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 19.12.2005, 17:47   #1
cenus
Elite
 
Benutzerbild von cenus
 
Registriert seit: 07.06.2000
Beiträge: 1.428

Mein Computer

Standard Wird C#-Code compiliert oder intepretiert?

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?
cenus ist offline   Mit Zitat antworten
Alt 19.12.2005, 18:37   #2
SourceGrabber
Abonnent
 
Registriert seit: 15.11.2001
Alter: 40
Beiträge: 543


SourceGrabber eine Nachricht über ICQ schicken SourceGrabber eine Nachricht über AIM schicken SourceGrabber eine Nachricht über Yahoo! schicken
Standard

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 -
SourceGrabber ist offline   Mit Zitat antworten
Alt 19.12.2005, 20:53   #3
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

.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)
delphirocks ist offline   Mit Zitat antworten
Alt 19.12.2005, 21:11   #4
mkay
Senior Member
 
Registriert seit: 15.09.2005
Alter: 38
Beiträge: 131


Standard

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.
mkay ist offline   Mit Zitat antworten
Alt 20.12.2005, 08:01   #5
cenus
Elite
 
Benutzerbild von cenus
 
Registriert seit: 07.06.2000
Beiträge: 1.428

Mein Computer

Standard

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?
cenus ist offline   Mit Zitat antworten
Alt 20.12.2005, 08:14   #6
Dillinger
Veteran
 
Registriert seit: 09.07.2000
Ort: wien
Beiträge: 275


Standard

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
Dillinger ist offline   Mit Zitat antworten
Alt 20.12.2005, 11:38   #7
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

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.


delphirocks ist offline   Mit Zitat antworten
Alt 20.12.2005, 22:02   #8
Dillinger
Veteran
 
Registriert seit: 09.07.2000
Ort: wien
Beiträge: 275


Standard

thx - und bis wann testest du es aus?
____________________________________
2 pi or not 2 pi
Dillinger ist offline   Mit Zitat antworten
Alt 21.12.2005, 07:17   #9
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

Nächstes Jahr
delphirocks ist offline   Mit Zitat antworten
Alt 21.12.2005, 09:15   #10
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:10 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag