Unterschiede C++/C#
-
Wie kann etwas schneller als Assembler sein, wenn es in selbiges übersetzt wird?
-
Manuelh87 schrieb:
Ja ok. aber dann schießt sich der java code sowieso ins out. Hattet natürlich recht hab keine ahnung von java und virtual maschine... aber mann kann ja nicht alles können... naja warum ich so begeistert bin von inline + template in kombination?? hab ich glaub ich schon erklärt und wärst nicht glaub der glaubts halt eben nicht... nicht mein problem. Aber er sollte nicht dumm reden (supercodes) denn wie gesagt gibt es so "Supercodes" Hab mich angefangen für sowas zu interessieren wie ich auf flipcode gestöbert hab...
oh junge...
1. man braucht kein inline schlüsselwort damit der compiler inlined, in c++ hält sich der compiler eh nur selten and as schlüsselwort und inlined da was passt. genau dasselbe kannst du in jeder sprache machen, gejittet oder nicht ist da völlig egal. Java kann das auch.
ein weiterer punkt ist, dass java nicht so sehr auf templates angewiesen ist wie c++! in java programmiert man ja leicht anders...
ch hab schon codes gesehen wo mithilfe von templates und inline der compiler von c++ dazu gebracht wurde code zu erstellen der !besser! ist als die gleiche funktion in asm.
Und das ist ja das absolute nonplusultra deiner kommentare
wenn der ASM-programmierer gut ist, dann kann der c++ compiler einpacken! Der Compiler tut ja auch nichts anderes als C++ code in ASM zu übersetzen, dh er kann maximal ein gleich schnell erreichen, wenn der ASM-programmierer keinen fehler macht.Und dann noch zu deinem kommentar" c++ ist meiner mienung nach noch ne etage tiefer als java.".
Den kann man auch in die Tonne kloppen! Der jitter zieht extrem viele vorteile aus dieser höheren Ebene, da er den Code beim laufen betrachtet, er kann also auch etwas mehr über den groben zusammenhang herausbekommen als der C++ compiler, und damit auch größere optimierungen betreiben(der c++ compiler macht fast nur mikro optimierungen)
-
Ist doch klar Maschienencode ist schneller als Assembler, weil der Assemblercode muss er noch assembliert werden :p
Es gibt in Spiele doch auch andere Dinge die man in nen Thread verlagern kann, z.B. das Laden von Leveln damit man keine Ladepausen mehr hat, oder das aus- und einlagern von (nicht) benötigten Daten.
Ich frage mich immer weshalb viele C++ Programmierer sich angepisst fühlen, wenn sie sich anhören müssen, dass Java teilweise fast genauso schnell wie ein c++ programm ist, ist doch super
Mir persönlich liegt Java auch nicht so, aber deswegen muss man die Leistungen doch nicht schlecht reden.
Meint ihr es gibt irgendwanneinmal ne Plattform deren Maschienencode Java Byte Code sein wird?
-
[quote="Gregor@Home"]
Annakin schrieb:
Red nicht so viel, wenn du keine Ahnung hast.
Es gibt in Java zum Beispiel das synchronized-Schlüsselwort, um zum Beispiel anzugeben, dass in der Abarbeitung einer Methode kein anderer Thread aktiv werden darf.
Bis zu dieser Bemerkung hatte ich angenommen mit dir kann man vernünftig reden.
Moonlight hatte recht dein Ton läßt zu wünschen übrig.
Wenn man den Ton nicht waren kann sollte man sich nicht äußern.Bist ein toller Typ Gregor
-
Michael E. schrieb:
Wie kann etwas schneller als Assembler sein, wenn es in selbiges übersetzt wird?
Das ist die "normale" Logik die eigentlich jeder nachvollziehen kann, aber hier gibt es ein paar Typen (Gregor) die meinen nur sie haben Ahnung.
-
Meint ihr es gibt irgendwanneinmal ne Plattform deren Maschienencode Java Byte Code sein wird?
Sowas sollte mit FPGAs möglich sein: http://www.jopdesign.com/
-
audacia schrieb:
Annakin schrieb:
Mal ne andere sache hat jemand mal einen Link für Qt (Windows)?
http://www.trolltech.com/products/qt/windows.html
Für Windows muß man aber AFAIK eine Lizenz kaufen; eine Open-Source-Variante wird es erst mit der Version 4 geben.
Moritz
Danke. Ich wollte es mir nur mal anschauen.
-
Annakin schrieb:
Michael E. schrieb:
Wie kann etwas schneller als Assembler sein, wenn es in selbiges übersetzt wird?
Das ist die "normale" Logik die eigentlich jeder nachvollziehen kann, aber hier gibt es ein paar Typen (Gregor) die meinen nur sie haben Ahnung.
Nein, die Logik ist nicht nachvollziehbar, auch wenn sie im Normalfall mit den Beobachtungen aus der Realität übereinstimmt.
1. Mit virtuellen Maschinen kann man im Prinzip bei vorliegender Laufzeitpolymorphie Inlining betreiben. Das heißt du hast die Vorteile von Inlining bei Strukturen, die nicht statisch zur Compilezeit gegeben sind. Soetwas ist eine typische Optimierungsmöglichkeit, die man ohne eine virtuelle Maschine nicht hat. Es gibt also technische Gründe, warum ein Programm mit virtueller Maschine schneller laufen könnte.
2. Viel wichtiger ist allerdings der menschliche Faktor. Programme werden von Menschen geschrieben. das gilt sowohl für Assemblerprogramme, als auch C++- oder Javaprogramme. Das gilt auch für Compiler und virtuelle Maschinen. Solange dieser menschliche Faktor im Spiel ist, kann man sich schonmal von optimalen Ergebnissen verabschieden. Das kann man noch in sehr kleinen, begrenzten Codebereichen erreichen, wenn es etwas komplexer wird, ist Optimalität aber nur eine ganz naive Wunschvorstellung, die oft mit anderen Zielen der Programmierer im Widerspruch steht. Wartbarkeit zum Beispiel. Entsprechend ist eine "Assemblerprogramme sind schneller"-Aussage auch nur eine naive Idealvorstellung, die nichts mit der Realität zu tun hat. Programme, die in Hochsprachen mehrere Millionen Zeilen Code haben, wird man gar nicht mit Assembler realisieren können. Diese Komplexität beherrscht kein Mensch.
Da Compiler, virtuelle Maschinen usw. auch von Menschen geschrieben werden, sind technische Argumente bezüglich der Performanz von Programmen, die in bestimmten Sprachen geschrieben wurden, weiterhin natürlich sehr mit Vorsicht zu genießen. Die meisten dieser Argumente spielen eine so geringe Rolle, dass sie gegenüber dem menschlichen Faktor beim Compiler oder bei der virtuellen Maschine irrelevant werden.
-
Von ARM gibt es bereits Prozessoren die zus. Java-Bytecode verstehen, das Feature nennt sich Jazelle.
-
Annakin schrieb:
Bis zu dieser Bemerkung hatte ich angenommen mit dir kann man vernünftig reden.
Moonlight hatte recht dein Ton läßt zu wünschen übrig.
Wenn man den Ton nicht waren kann sollte man sich nicht äußern.Jaja, schon gut. Ich will dir ja nichts böses. Du bist die Kompetenz in Person, vor allem, wenn es um Java geht. Das sieht man schon an deiner qualitativ hochwertigen Bemerkung, dass es in Java keinerlei sprachliche Unterstützung für Mutithreading gibt. Hast du mich jetzt wieder lieb?
-
SirLant schrieb:
Meint ihr es gibt irgendwanneinmal ne Plattform deren Maschienencode Java Byte Code sein wird?
JStamp im Embedded-Bereich zum Beispiel:
-
Gregor: Gib's auf. Er ist der dunklen Seite der Macht verfallen und egal wie viele Argumente und Begründungen du noch liefern wirst, Annakin scheint mir äußerst uneinsichtig zu sein. Außerdem lässt er sich ständig über Dinge aus, von denen er keine Ahnung hat, beispielsweise Threading und angebliches Interpretieren von Bytecode in Java.
Warum postest du eigentlich nur noch unregistriert? Hat man dich wegen Ahnungslosigkeit schon gebannt?
-
Optimizer schrieb:
Warum postest du eigentlich nur noch unregistriert? Hat man dich wegen Ahnungslosigkeit schon gebannt?
Ne. Ich habe mir irgendwann mal die Frage gestellt, warum ich eigentlich registriert poste und habe da nicht so viele Gründe gefunden. Ich poste jetzt einige Sachen auch unter anderen Namen, was ganz angenehm ist, wenn die eigene Meinung nicht so gesichert ist.
Ich fühl mich da dann nicht so involviert, nichts fällt auf mein virtuelles Ego zurück usw.!
Damit kann ich emotional viel besser umgehen.
Der spezielle Anlass damals war irgendein Thread, in dem es mehr oder weniger um die "Foren-Politik" hier ging. Mir ist damals aufgefallen, wie freundlich die doch gegenüber unregistrierten Nutzern ist. Da wollte ich auch dazu gehören.
-
Optimizer schrieb:
Gregor: Gib's auf. Er ist der dunklen Seite der Macht verfallen und egal wie viele Argumente und Begründungen du noch liefern wirst, Annakin scheint mir äußerst uneinsichtig zu sein.
Nenene. Nie soll man einen aufgeben. Haben ich und Volkard dich damals aufgegeben, als du deine Primzahlsuche nicht durch vernünftige Algorithmen optimieren wolltest?
Und jetzt schau dir an, was für ein gescheiter Bursche du geworden bist!
Inzwischen bist du mir zumindest in vielen Bereichen überlegen.
*SCNR*
-
Gregor@Home schrieb:
Annakin schrieb:
Bis zu dieser Bemerkung hatte ich angenommen mit dir kann man vernünftig reden.
Moonlight hatte recht dein Ton läßt zu wünschen übrig.
Wenn man den Ton nicht waren kann sollte man sich nicht äußern.Jaja, schon gut. Ich will dir ja nichts böses. Du bist die Kompetenz in Person, vor allem, wenn es um Java geht. Das sieht man schon an deiner qualitativ hochwertigen Bemerkung, dass es in Java keinerlei sprachliche Unterstützung für Mutithreading gibt. Hast du mich jetzt wieder lieb?
Den Typen kannste vergessen. Der hat gar nicht begriffen worum es bei der letzten Bemerkung ging.
Kann man solche Leute auch sperren?
Oder ist der einzig vernünfige Umgang mit solchen Leute sie zu ignorieren?
-
Gregor@Home schrieb:
Haben ich und Volkard dich damals aufgegeben, als du deine Primzahlsuche nicht durch vernünftige Algorithmen optimieren wolltest?
Das weißt du immer noch?? Wird denn hier gar nichts vergessen?
Annakin schrieb:
Den Typen kannste vergessen. Der hat gar nicht begriffen worum es bei der letzten Bemerkung ging.
Kann man solche Leute auch sperren?
Oder ist der einzig vernünfige Umgang mit solchen Leute sie zu ignorieren?Überhaupt kein Problem: http://www.c-plusplus.net/forum/viewtopic-var-t-is-109290.html
-
Annakin schrieb:
Den Typen kannste vergessen. Der hat gar nicht begriffen worum es bei der letzten Bemerkung ging.
Dann bin ich wohl dumm.
Annakin schrieb:
Kann man solche Leute auch sperren?
Das könnte schwierig werden. :p ...nur so eine Vermutung.
Annakin schrieb:
Oder ist der einzig vernünfige Umgang mit solchen Leute sie zu ignorieren?
Wenn es dein Konfliktlösungsverhalten ist, Leute zu ignorieren, die dir gegenüber mal ein härteres Wort in den Mund nehmen oder dir ganz unverblümt die Meinung sagen, dann solltest du das tun. Wobei du dann mal darüber reflektieren solltest, ob du mit der Einstellung unbedingt Foren aufsuchen solltest, wo von Natur aus Leute mit anderen Meinungen sind und wo die Leute eine andere Einstellung als Mami und Papi haben, die ihrem Kind ja nicht die heile Welt kaputt mahen wollen. Vielleicht ist es da besser, sich irgendwo einzuschließen und möglichst keinem anderen Menschen mehr zu begegnen.
Man, es wird einem in Foren wie diesem so oft die Kompetenz ganz offen von irgendwelchen Leuten abgesprochen, dass man das echt nicht überbewerten sollte. Und wenn da auch noch'n Smiley bei steht, kann man das ruhig mal mit ein bischen Schmunzeln aufnehmen und die Kritik einfach akzeptieren und zugeben, dass man mal auf der falschen Fährte war. Das mach ich auch oft genug. Wenn dich das "keine Ahnung" so stört, dann nehm ich das hiermit zurück, entschuldige mich vielmals und ersetze es mit einem "Nein, das ist falsch.".
So, vielleicht kann man jetzt wieder zum Thema zurückkommen. So ein kleiner Satz ist doch nichts, an dem man sich unbedingt aufhängen muss.
-
Optimizer schrieb:
Überhaupt kein Problem: http://www.c-plusplus.net/forum/viewtopic-var-t-is-109290.html
Oh, interessant. Dann sollte ich vielleicht öfter mal den Namen wechseln.
-
Gregor@Home schrieb:
Annakin schrieb:
Den Typen kannste vergessen. Der hat gar nicht begriffen worum es bei der letzten Bemerkung ging.
Dann bin ich wohl dumm.
Annakin schrieb:
Kann man solche Leute auch sperren?
Das könnte schwierig werden. :p ...nur so eine Vermutung.
Annakin schrieb:
Oder ist der einzig vernünfige Umgang mit solchen Leute sie zu ignorieren?
Wenn es dein Konfliktlösungsverhalten ist, Leute zu ignorieren, die dir gegenüber mal ein härteres Wort in den Mund nehmen oder dir ganz unverblümt die Meinung sagen, dann solltest du das tun. Wobei du dann mal darüber reflektieren solltest, ob du mit der Einstellung unbedingt Foren aufsuchen solltest, wo von Natur aus Leute mit anderen Meinungen sind und wo die Leute eine andere Einstellung als Mami und Papi haben, die ihrem Kind ja nicht die heile Welt kaputt mahen wollen. Vielleicht ist es da besser, sich irgendwo einzuschließen und möglichst keinem anderen Menschen mehr zu begegnen.
Man, es wird einem in Foren wie diesem so oft die Kompetenz ganz offen von irgendwelchen Leuten abgesprochen, dass man das echt nicht überbewerten sollte. Und wenn da auch noch'n Smiley bei steht, kann man das ruhig mal mit ein bischen Schmunzeln aufnehmen und die Kritik einfach akzeptieren und zugeben, dass man mal auf der falschen Fährte war. Das mach ich auch oft genug. Wenn dich das "keine Ahnung" so stört, dann nehm ich das hiermit zurück, entschuldige mich vielmals und ersetze es mit einem "Nein, das ist falsch.".
So, vielleicht kann man jetzt wieder zum Thema zurückkommen. So ein kleiner Satz ist doch nichts, an dem man sich unbedingt aufhängen muss.
Ich kann andere Meinungen gut akzeptieren, du offenbar nicht, dazu braucht man sich nur deine Äußerungen hier in diesem Thread anzuschauen.
Jemanden dem Mund zu verbieten hat nichts damit zu tun die Meinung härter zu vertreten.
Das heißt nur das dir die Argumente ausgehen.
Deine Argumente waren jedesmal lang, aber nicht besonders gut.
Ich glaube auch nicht das es dir darum geht eine vernünftige Diskussion zu führen, du willst nur gegenanreden. Ansonsten hättest du mittlerweile begriffen das Java gegenüber C++ langsamer ist.
Die hier auch von anderen Leuten dargebrachten Argumenten sprechen dafür.An solchen Sätzen muß man sich nicht hochziehen.
Solche Sätze zeigen aber den Character eines Menschen, sie zeigen ob jemand den Ton waren kann oder nicht.
Du hast es nicht nur fachlich nicht drauf, so bist vom Umgang und emotional so ziemlich unterste Stufe.
Du solltest daran arbeiten, wenn du mal größer bist wirst du festellen das letztere sehr wichtig im Leben ist.Ich habe dich inzwischen gesperrt, das meine Reaktion auf Leute die sich nicht benehmen können.
-
otze schrieb:
er kann also auch etwas mehr über den groben zusammenhang herausbekommen als der C++ compiler
Siehste... das halt zum Beispiel ich für ein gerücht... Ich bin mir ziemlich sicher das java nix optimiert at runtime (wäre offen gesagt auch ziemlich dämlich da man ja den meisten performance gain durch die suche nach möglichen optimierungen wieder verlieren würde...) wenn da tut es das vorher! Ich weiß nicht in wiefern es sachne prüft at runtime aber da verliert wenn es das macht man auch nur performence... und soviele würmer wie über java reinkommen kann ich mir nicht vorstellen das es diese höhere ebene irgendwie nutzt aber das lass ich mal dahingestellt. Bei Punkt optimierungen bin ich mir aber ziemlich sicher dass das at runtime schwachsinn ist, sry.
größere optimierungen betreiben(der c++ compiler macht fast nur mikro optimierungen)
Achja nur micro optimierungen... sry aber ich kenne keinen compiler der c++ compiler heißt. Da musst du schon genauer werden. Ich kenne den MSVC++ gut für den ist optimierung ein fremdwort und ich kenne aber auch den gcc und kann nur sagen das der sicher nicht nur micro optimierungen macht. (Kleiner Tip man muss es händisch einschalten vielleicht lags bei dir daran!
)
Würd mich aber interessieren woher du das hast.Und wegen asm... wär mal meine frage ob du das kannst. denn wenn ja frag ich dich wie du das praktisch anstellen willst.
der code den ich meine der mit c++ + optimierung erreicht wird wird geinlined und sieht ungefähr so aus mov eax,value1 addf eax,value2 addf eax,value3 mov var1,eax
und wie willst du das jetzt praktisch mit asm machen (templates mal weggelassen); Du hast theorethisch schon recht das man alles in asm machen kann was auch in c++ geht, gut gelesen. Aber du musst dir auch praktisch überlegen wies aussieht und wieviel aufwand es ist und am ende kommst du bei dem ohne templates nur schwer auf die gleiche lösung... (müsstes ja ne proc machen und hast damit schon mal ein paar instructuions mehr.
Mit templates gehts natürlich besser. Wenn der compiler geshcickt ist lässt er gleich ein paar sachen in registern und schwups hast du nen echt fett optimierten code.Wer sichs nicht vorstellen kann ist auch gut es bringt ja nix wenn ich von sowas erzähle... schauts euchs halt an.
cu Manuelh87