C# und Linux
-
Wir brauchen nur noch Leute, die den Code schreiben
-
Beeindruckend viel Halbwissen in diesem Thread
C# ist die Sprache, die Microsoft gewählt hat um einen Vertreter für ihre .NET-Plattform zu haben. Tja, und auf was werden sie ihre eigene Plattform optimieren? Wohl auf das, was unter Windows am meisten gemacht wird: gemalt. Alle Reaktionen werden unter Windows gemalt. Die häufigste Malerei sind Text und Fenster - also sollte man hier die Geschwindigkeit testen.
Du könntest so auch gegen Java argumentieren - was allerdings weder Java, noch C# gerecht wird. Der .NET-JITC ist genauso auf "Standard-Aufgaben" wie Algorithmen o.ä. ausgerichtet, wie die Java-VM. Die .NET-Library bietet ebenfalls Soriterungs-Algorithmen etc. an. Warum sollte man also das Fensterbasteln vergleichen?
Dieser Test wäre noch dazu ein völlig unsinniger Test, da ja nicht der Interpreter das Fenster erzeugt, sondern anderweitige Libs (Windows-API, GTK, bla).
BTW: Wieso vergleichen wir C#, eine Sprache die für das Bauen von Fenstern gemacht ist, mit einem Sortieralgorithmus den es im Internet assembleroptimiert zu holen gibt?
Wer will einen solchen Algorithmus denn in Assembler? C#-Code wird im Endeffekt auch zu JIT-optimierten x86-Assembler, wobei .NET-Code den Umweg über MSIL macht. .NET-Applikationen sind nicht interpretiert.
Wenn Mono denn C++ Compiler unterstützt sollte man diesen mit testen.
Grund, C++ ist im managed Bereich auch schneller als die anderen Spachen.MSIl-Backends für den GCC sind in Vorbereitung, es wird also bald losgehen ;)! Trotzdem, die Sache mit dem Geschwindigkeitsvorteil für C++ ist Firlefanz. Sämtliche .NET-Sprachen münden in MSIL, einem speziellen abstrakten Assembler. Dieser MSIL ist plattformunabhängig, und wird von einem JIT-Compiler vor der Ausführung in absolut nativen Assembler umgesetzt und ausgeführt.
Der MS-JIT optimiert bereits hervorragend (was MS ja auch mit dem VC++ beweiset), Mono hinkt noch ein wenig hinterher. Aus diesem Grunde ist C++ auch nicht schneller oder langsamer als C#, COBOL.NET oder VB.NET: Sie werden alle zu MSIL, alle verwenden dieselben Algorithmen, alle sind auf dieselbe Basis gestellt. Darum ist es irrelevant, ob man nun C# mit Java vergleicht, oder C++.NET mit Java.
[BTW: DotGNU ist die GNU-Webservice-Plattform und kein .NET-Port!]
[ Dieser Beitrag wurde am 30.06.2002 um 17:31 Uhr von Nikolaj editiert. ]
-
Original erstellt von Nikolaj:
Der MS-JIT optimiert bereits hervorragend (was MS ja auch mit dem VC++ beweiset), Mono hinkt noch ein wenig hinterher. Aus diesem Grunde ist C++ auch nicht schneller oder langsamer als C#, COBOL.NET oder VB.NET: Sie werden alle zu MSIL, alle verwenden dieselben Algorithmen, alle sind auf dieselbe Basis gestellt. Darum ist es irrelevant, ob man nun C# mit Java vergleicht, oder C++.NET mit Java.Aber man verbraucht Zeit zum precompilen, da die Software für jede Platform ja neu kompiliert wird vor dem ausführen. Außerdem sprachen wir ja nicht von C++.NET, was imho nicht standard konform sein soll, sondern von ISO C++ festcompiliert mit den gängigen Compilern GCC,ICC,MSVC++ um.
[BTW: DotGNU ist die GNU-Webservice-Plattform und kein .NET-Port!]
Aber DotGNU verbindet die verschiedenen Projekte zum ersatz von dotNET und C#
http://www.southern-storm.com.au/portable_net.html zum Beispiel
Außerdem kann man sich Packete direkt von dort ziehen
-
Original erstellt von Nikolaj:
Trotzdem, die Sache mit dem Geschwindigkeitsvorteil für C++ ist Firlefanz.Der Witz ist ganz einfach (mir egal, wieviel Unwissen gezeigt wird), daß man in C++ keine Laufzeitkosten für was bezahlt, was man nicht benutzt. Klares und gutes Konzept. Und die Sprachen, die einem Firlefanz wie nen Garbage-Collector aufzwingen können ganz einfach nicht mitkommen.
-
@Nikolaj:
Einige meiner Kollegen haben Performance-Test zwischen den einzelnen Sprachen gemacht. Dabei habe ich festgestellt( naja traue keinem Test den du nicht selbst gefälscht hast) das trotz einheitlichen MSIL-Code der Code unterschiedlich schnell ist (Compileroptimimerung und damit unterschiedlicher MSIL-Code).
Incl. einiger Test aus dem Internet, hat C# bis jetzt immer VB.NET geschlagen. C# und C++.NET mehmen sich mal nichts und liegen in anderen Bereichen wieder weit auseinander, in beiden Richtungen.
Ebenfalls fließt PInvoke in meine Beurteilung mit ein, da ich dies jeden Tag benutzen muss um Laufzeitprobleme und fehlende .NET Implemetierungen ausgleichen zu können.
Und wenn du andere Post von mir mal lesen würdest, hab ich immer schon gesagt man sollte .NET mit JAVA vergleichen.Dieser Test wäre noch dazu ein völlig unsinniger Test, da ja nicht der Interpreter das Fenster erzeugt, sondern anderweitige Libs (Windows-API, GTK, bla).
Fast richtig!
Der MS-JIT optimiert bereits hervorragend (was MS ja auch mit dem VC++ beweiset),
Man könnte ja fast meinen du arbeitest für MS! :p
Aber man verbraucht Zeit zum precompilen, da die Software für jede Platform ja neu kompiliert wird vor dem ausführen.
Ja, allerdings bitte .NET drei precompilierungs Möglichkeiten an,
eine Normale, economy und bei der Installation. Alle haben sie ihre Vor- und NachteileP.S. Vielen Dank für deine Aufklärung in sachen .NET.
-
Aber DotGNU verbindet die verschiedenen Projekte zum ersatz von dotNET und C#
Ja, aber man kann von DotGNU nicht erwarten dass .NET-Anwendungen auf dieser Plattform laufen. Dafür existiert Mono.
P.S. Vielen Dank für deine Aufklärung in sachen .NET.
Is das ironisch zu verstehen ;)?
-
Ja, aber man kann von DotGNU nicht erwarten dass .NET-Anwendungen auf dieser Plattform laufen. Dafür existiert Mono.
Kann man das überhaupt von einem System erwarten, was nicht von einem unabhängigen und akzeptierten Institut standardisiert wurde, speziell damit meine ich einen gültigen ISO Standard.
Und aus welchem Grund sollte Mono besser funktionieren als dotGNU?
-
Kann man das überhaupt von einem System erwarten, was nicht von einem unabhängigen und akzeptierten Institut standardisiert wurde, speziell damit meine ich einen gültigen ISO Standard.
Ohoh, Halbwissen. Die .NET-Plattform ist zwar nicht von der ISO standardisiert, wohl aber von der ECMA, insofern ein offener Standard. Genaus ist es mit C#.
Und aus welchem Grund sollte Mono besser funktionieren als dotGNU?
Das habe ich nie gesagt. Mono & DotGNU sind nur verschiedene Schuhe - Mono ist ein Linux-Port von (ECMA-334-).NET, wohingegen DotGNU eine Imitierung der .NET-Technologie darstellt. .NET-Applikationen laufen unter DotGNU einfach nicht.
-
Die Idee die Geschwindigkeit mit der Fenster dargestellt werden zu vergleichen erachte ich als blödsinn, da ich bisher bei keinem mir Bekannten System mich darüber aufgeregt habe, dass das Fenster Etwas länger gebraucht hat. Wenn eine Anwendung aber intern etwas sortieren muss und ich Statt 30 Sekunden nur 5 Warten muss, dann finde ich das sehr interessant.
@volkard:
IMHO besitzt C++ with managed extension einen GarbageCollector.
-
wie siehts aus?