"We are back" « oc.at

kleines tool für c# hacker

Oculus 14.11.2003 - 13:40 2805 38 Thread rating
Posts

Phobos

✝
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
Zitat von crashman
c# verwendet eine virtuelle maschine analog zu java -> folglich brauchst du die vm die bei c# imho VES heisst und im .net package dabei ist.

danke das hat mich interessiert.

offensichtlich sind einige neu-admins nicht in der lage "normale user" ernst zu nehmen :mad:

Oculus

void
Avatar
Registered: Jun 2001
Location: schlafzimmer
Posts: 856
aehm, nur zur info:

beim compilieren wird der c# code in MSIL code übersetzt = microsoft intermediate language
kann man mitn java byte-code vergleichen

dieser code wird dann vom CLR = common language runtime in maschinennahen code übersetzt, der dann eben von der CLR ausgeführt wird.
kein vergleich zur java-vm, da es sich bei der CLR dumm gesagt um einen geschützten speicher handelt -> managed code
ausserdem übernimmt die CLR auch alle security-kontrollen

übersetzung vom MSIL code geschieht bei der ersten anfrage, danach liegt der compilierte code + metadaten im assembly-cache des system



aber eigentlich gehts ja um das tool :rolleyes:
Bearbeitet von Oculus am 15.11.2003, 13:23

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von Oculus
kein vergleich zur java-vm, da es sich bei der CLR dumm gesagt um einen geschützten speicher handelt -> managed code
ausserdem übernimmt die CLR auch alle security-kontrollen

Also genau wie bei Java.

Oculus

void
Avatar
Registered: Jun 2001
Location: schlafzimmer
Posts: 856
eben nicht

java verwendet einen interpreter, der den byte-code interpretiert (duh!)
MSIL code wird nicht interpretiert, sondern läuft annähernd native -> massiver performance-schub gegenüber java

nachteil: bereits in MSIL compilierter code muss nochmals bei der ersten anfrage vom plattformabhängigen CLR-compiler übersetzt werden. dann ists nimma plattformunabhängig

wobei sich die plattformunabhängigkeit beim .net eh auf intel, amd und alpha beschränkt :rolleyes:

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Hast du schon mal was von Java JIT Compilern gehört?

EDIT: Ich mach meine Diplomarbeit über Java JIT Compilation, da kenn ich mich aus, das kannst mir glauben. :)
Bearbeitet von Ringding am 15.11.2003, 13:53

Oculus

void
Avatar
Registered: Jun 2001
Location: schlafzimmer
Posts: 856
glaub ich dir schon, dass du dich auskennst

stimmt doch, dass der JIT den byte-code für die plattformabhängige java-VM kompiliert, damit dieser dann vom java-interpreter der VM ausgeführt werden kann, oder?

edit: warum diskutieren wir jetzt über des?
es geht um mein tool :)

zur info:
ich verwend den CodeDom-Namespace vom framework, mit dem man code zur laufzeit kompilieren und ausführen, speichern oder wwi kann.
den code, den man in der commandline von meinem tool eingibt, wird in eine template-methode eingefügt, die dann vom tool aus aufgerufen wird.
also hatman die beschränkung, dass man nur code wie im rumpf einer methode programieren kann. was aber für solch kleine testereien völlig ausreicht.
brauchtman spezielle klassen, muss man sie halt vollqualifiziert angeben
zb. System.IO.StreamReader oda System.Collections.ArrayList
Bearbeitet von Oculus am 15.11.2003, 18:55

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Der Java Compiler (javac oder jikes) macht aus .java Files .class Files. Diese enthalten Bytecode für die VM.
Die VM enthält entweder einen Interpreter oder einen JIT Compiler (oder beides) und führt den Bytecode aus. Im Falle des JIT Compilers bedeutet das, dass jede Methode, bevor sie ausgeführt wird, von Bytecode in Maschinencode (für die jeweilige CPU) übersetzt wird.

Bei .NET ist es genau gleich, nur dass die Dinge ein bisschen anders heißen.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Und wo ist jetzt der Sourcecode?

Oculus

void
Avatar
Registered: Jun 2001
Location: schlafzimmer
Posts: 856
Zitat von Ringding
Der Java Compiler (javac oder jikes) macht aus .java Files .class Files. Diese enthalten Bytecode für die VM.
Die VM enthält entweder einen Interpreter oder einen JIT Compiler (oder beides) und führt den Bytecode aus. Im Falle des JIT Compilers bedeutet das, dass jede Methode, bevor sie ausgeführt wird, von Bytecode in Maschinencode (für die jeweilige CPU) übersetzt wird.

Bei .NET ist es genau gleich, nur dass die Dinge ein bisschen anders heißen.

woher kommt dann der performancevorteil beim .net?
(is jetzt als frage gemeint, und net als konter ;))
codetester_cs_41319.txt (downloaded 32x)

crashman

OC Addicted
Avatar
Registered: Oct 2001
Location: Vienna
Posts: 891
Zitat von Oculus
woher kommt dann der performancevorteil beim .net?
(is jetzt als frage gemeint, und net als konter ;))

eine blöde gegenfrage aber performancevorteil bei welcher anwendung ?
Wenn ich c# oder java eine 3D engine programmier und sie in java mit 0.5 fps rennt aber in c# mit einem gehör ich trotzdem gehaut ;)
Sonst kann ich mir kaum eine anwendung vorstellen wo man einen performance unterschiede merken könnte.
Das beim starten eine kleine verzögerung eintritt werte ich jetzt mal nicht als Performance nachteil.

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
Zitat von Oculus
mir war heut recht fad in da firma
und da hab ich mir endlich ein kleines tool programmiert, was ich schon lang hätte brauchen können

einen kleinen code-tester
wenn man also fragmente eines codes testen will, braucht man sich nimma extra a file schreiben und compilieren

keine ahnung, obs andere auch noch brauchen können
für mich ists sehr hilfreich :)

programm ist selbsterklärend

für wünsche/anregungen/kritik bin ich grundsätzlich offen, solangs sie ungleich aussagen wie "wozu brauchtma das?" oder "bringt nix, so a schas" ist
oh my fu***** god :bash:

wozu gibts Unittests mit NUNIT? [sprich: enjunit]

warum leicht, wenns auch ...... :rolleyes:

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
@crashman: Ich hab mal das Descent probeweise für .net compiliert, da ist es haargenau gleich schnell gelaufen wie native.

Leider weiß ich auch noch keine vernünftige Erklärung für den oft enormen Performanceunterschied / .NET. Es gibt durchaus Sachen, da ist Java auch recht schnell. .NET ist halt doch neuer und hat schon ein bisschen aus den Fehlern von Java gelernt und hat auch ein paar Tweaks und Möglichkeiten mehr eingebaut.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
hier muß sun unbedingt aufholen - so wie .net von java gelernt hat, muß java von .net lernen.

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
nur dass SUN derzeit finanziell eher schlecht da steht ... :/
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz