kleines tool für c# hacker - Seite 2

Seite 2 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/kleines_tool_fuer_c_hacker_98552/page_2 - zur Vollversion wechseln!


Phobos schrieb am 14.11.2003 um 22:44

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 schrieb am 15.11.2003 um 13:21

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:


Ringding schrieb am 15.11.2003 um 13:23

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 schrieb am 15.11.2003 um 13:26

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 schrieb am 15.11.2003 um 13:50

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. :)


Oculus schrieb am 15.11.2003 um 18:51

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


Ringding schrieb am 15.11.2003 um 19:00

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 schrieb am 16.11.2003 um 21:08

Und wo ist jetzt der Sourcecode?


Oculus schrieb am 16.11.2003 um 23:38

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 ;))


crashman schrieb am 17.11.2003 um 11:39

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 schrieb am 17.11.2003 um 12:24

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 schrieb am 17.11.2003 um 12:36

Infos:

http://csharpfriends.com/Articles/g...px?articleID=89

http://csharpfriends.com/Articles/g...px?articleID=90


Sorry - habs vorhin vergessen dazuzuschreiben


Ringding schrieb am 17.11.2003 um 17:11

@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 schrieb am 17.11.2003 um 19:58

hier muß sun unbedingt aufholen - so wie .net von java gelernt hat, muß java von .net lernen.


Jedi schrieb am 17.11.2003 um 21:37

nur dass SUN derzeit finanziell eher schlecht da steht ... :/




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025