C# vs C++
-
Hallo,
ich bräuchte eine Seite, die sachlich auf die Geschwindigkeit von C# eingeht (z.B. im Vergleich zu C++), wo es einen Overhead geben könnte, wie das mit NGen und JIT funktioniert etc. Hat da jemand was?
PS: Dies soll KEIN Flamewar werden!
-
Overhead lauert überall, bei C++ hast du standardmäßig weniger davon, kannst aber auch durchaus auf das selbe kommen, wenn du gewisse Sachen automatisierst. Auch kannst du oft davon ausgehen, dass in .Net manche Sache besser implementiert sind, als wenn du sie für C++ selber schreibst.
Im Großen und Ganzen kannst du mit C++ mehr herauskitzeln, musst aber natürlich ordentlichen Aufwand dafür betreiben. Aber du willst es viel zu allgemein wissen nach dem Motto: "Mir würde ja C# gefallen, aber ist es nicht zu lahm?"Also was erwartest du für eine Antwort? Wenn du wenigstens gefragt hättest "ist JIT-Compilierung / Garbage Collection wirklich so langsam", dann könnte man spezielle Hinweise und Links geben, aber so allgemein gestellte Fragen sind dafür hervorragend geeignet eine Halbwissen-Bemerkung nach der anderen zu provozieren.
Naja was solls, ich klatsch dir mal zwei Links hin. Muss man natürlich mit Vorsicht lesen, da von Microsoft. Aber ganz anlügen tun sie dich schon nicht. Seltsamerweise erkennt man bei Microsoft-Artikeln immer gleich, was leeres Gefasel ist und was nicht ganz falsch ist.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/dotnetperftechs.asp
http://msdn.microsoft.com/msdnmag/issues/1100/gci/
-
Optimizer schrieb:
Seltsamerweise erkennt man bei Microsoft-Artikeln immer gleich, was leeres Gefasel ist und was nicht ganz falsch ist.
das nennt man psyhologie. würde man leuten die sich einigermassen auskennen versuchen marketing ganz gut verpackt unterzujübeln, würden sie den ganzen schrieb als nonsens verwerfen.
steckt man aber offensichtliche marketing-floskeln rein, glauben die menschen plötzlich den ganzen rest.dazu gab es mal von einer ami-uni ein paper und wie man bei nun fast jeder werbung sehen kann, gibt es sehr offensichtliche bewerbung von mängeln, die jeder für sich herausfiltert und der rest wird akzeptiert
aber auf einer andere weise würden menschen wohl nicht z.b. für eine <30% schnellere cpu sich nen neuen rechner für >1kEuro ziehen.
nun OnTopic:
@moep: Du wirst dich nur in unsinnigen tests wiederfinden. die sprachen haben nunmal ihre vorteile, c# eher "fire&forget" und c++ "kann-aus-der-zitrone-den-letzten-tropfen-bis-zur-pulverisierung-quetschen" und nachteile "wo isn' nu die rakete hin" und c++ "wenn ich quetsche kommt aber nichts raus".du glaubst garnicht wie unsinnig es ist sowas zu fragen, denn du kannst die selben programme auf anderen systemen testen und das langsamste könnte plötzlich das schnellste sein. btw. das ist der grund weshalb leute horrende preise für komplette serversysteme zahlen, nicht weil der intelxeon darin plötzlich den doppelten preis wert ist, sondern weil nur ein system, dessen software auf die hardware abgestimmt ist, auch wirklich performance liefern kann.
ein beispiel:
//code 1 for(int a=0;a<SCREENSIZE;a+=SIZEX) { pScreen[a+0] = pScreen[a+1] = . . . pScreen[a+SIZEX-2] = pScreen[a+SIZEX-1] = 0; } //code 2 for(int a=0;a<SCREENSIZE;a+=SIZEX) { *pScreen++ = 0; *pScreen++ = 0; *pScreen++ = 0; . . . *pScreen++ = 0; *pScreen++ = 0; *pScreen++ = 0; }
der erste code würde auf einem P4 schneller sein als der zweite, während der zweite nun schneller wäre auf nem ARM (das sind manche CPUs in PocketPCs auf denen auch c# programme laufen, und ganz zufällig sind die meisten x86 und ARM :D).
nun stell dir vor, die beiden programme die du gegeneinander vergleichst haben diesen unterschied, machen rein praktisch genau das selbe, das ergebnis das du erhälst ist radom/noise, was vom system abhängt, vom compiler, ja alleine schon davon wie oft dein programm gelaufen ist (weil manche compiler noch im nachinein optimieren), vom cache der cpu, von der art und weise wie du includest, von der art und weise wie gerade der speicher fragmentiert ist von...
du kannst also nur für dich deine meinung haben die du dir selber erarbeitest, ein anderer wird dir nichts objektives sagen, denn auch er kann nicht genug überblicken um es objektiv zu machen, und könnte er es überblicken, würde er den kindischen test nicht machen, weil er wüste wie blödsinnig das ist... paradox, oder?
rapso->greets();