Unterschiede C++/C#
-
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
-
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.
Ich kann es absolut nicht leiden, wenn meine Postings missbraucht werden
Mein Post hat sich gegen Aussagen wie diese gerichtet:
Manuelh87 schrieb:
Ich 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.
Was offensichtlich Blödsinn ist.
Ich stimme mit Gregor überein, ich erinnere mich an keinen einzigen Punkt in diesem Thread, in dem ich das nicht tue. Ihm seine soziale Kompetenz abzusprechen ist eine Sache, die ich nicht nachvollziehen kann, weil er sich absolut normal verhalten kann. Aber dann auch noch seine sachliche Kompetenz zu bestreiten find ich ungeheuerlich
-
Manuelh87 schrieb:
Du hast theorethisch schon recht das man alles in asm machen kann was auch in c++ geht
Dann sind wir uns ja einig, weil nie was anderes behauptet wurde.
-
Manuelh87 schrieb:
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.
Dann muss ich dir leider sagen, dass deine vorstellungen wenig mit der realität gemeinsam haben!
hier 2 links zu compilierungstechniken
link1
link2zu erwähnen ist desweiteren noch, dass jit compiler besser wissen was gecached werden muss oder kann als normale compiler was wieder eine bessere performance bringt
für mehr infos musst du dann im internet suchen
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.natürlich gibt es nicht "den" c++ compiler, aber alle benutzen dieselben techniken. ein compiler kann keine größeren zusammenhänge erkennen. in kleinen bereichen wie loop unrolling oder inlining kommt er sehr gut klar, und das macht er dann auch soweit man ihm dies erlaubt. andererseits kann er sowas nicht optimieren:
map<string,int> mymap; // map mit werten bestücken... //... //was mit der map machen if(mymap.find(myname)!=mymap.end()){ int value=map.find(myname)->second;//den zweiten aufruf von find kriegt er nicht weg }
und wieso? der compiler weis nicht, dass sich in der map zwischen den aufrufen nichts ändert.(Kleiner tipp: bei zweifeln selber den compiler anschalten und asm output anschauen
)
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.
es ging nur um deinen geschwidigkeits schwanz vergleich, und im zweifelsfall verliert der beste compiler den, wenn ihn jemand wirklich schlagen will! mehr wollte ich nicht sagen. wenn du sagst "der compiler kann einen schnelleren code erzeugen als ein asm programmierer" dann liegst du nur dann richtig, wenn der asm programmeirer keine lust hatte das maximum rauszuholen(oder es einfach nicht kann)! Vom zeit aspekt war weder von mir noch von dir bis dato die rede, deshalb hinkt das argument ganz mächtig(weil es eine verschiebung der ebene ist).
-
otze schrieb:
map<string,int> mymap; // map mit werten bestücken... //... //was mit der map machen if(mymap.find(myname)!=mymap.end()){ int value=map.find(myname)->second;//den zweiten aufruf von find kriegt er nicht weg }
Ärm den code kann er nichtmal compilieren
Das zweite mit praksis hast ned checkt sry! Ich meine klar kann man das gesamte programm ohne procs und so macht nur braucht man dazu 20 jahre wenn man alles so von hand macht... das ist ne theory - praksis sache... Theoretisch geb ich dir vollkommend recht nur praktisch ist glaub ich die c++ methode die bessere. Trotzdem hät ich gerne deine geschwindigkeits schwanz funktion die schneller ist als meine beschriebene gesehen... Es gibt auch funktionen die einfach schon mit c++ am maximum sind. Zugegeben kommt sicher nicht allzuoft vor aber bei dem beispiel bin ich mir ziemlich sicher... Und selbst wenn du eine asm funktion findest (wie auch immer) die schneller ist ist die c++ methode noch immer praktischer und nochimmer viel schneller als die normal gernerierte...
Wegen dem java dynamics zeug.... halt ich nochimmer für ziemlichen müll! Kann mir nicht vorstellen das er das was er mit den analysen verschießt wieder mit seinen optimierungen reinholt. Hab auch nirgendst was gesehen was das im endeffekt bringen soll.
Und zu deinem missratenen beispiel... ich mein varum sollt ich denn 2x die funktion aufrufen? Ist das nicht total bescheuert. Ich mein sowas würd ich nie machen. Ich mein sry aber wenn du den größten deppen-code nimmst dann kanns schon sein das irgendwann java mit seinen profi-optimierungen schneller ist... ich mein ein wenig muss der coder schon noch mitdenken!
Nagut ich werd also nichtsmehr von wegen sagen das der code besser ist als asm da es auch hier möglichkeiten für inline + templates gibt die ich bei dieser aussage nicht bedacht habe. Dafür entschuldige ich mich auch vielmals.
Bitte nicht denken ich mag nur nen kleinen flame machen... interessiert mich ja wirklich was ihr dazu zu sagen habt! Nur weil ich mir was nicht vorstellen kann heißt das ja nicht das es nicht existiert... also meine (oftmals) dümmlichen antworten nicht persöhnlich nehmen
cu Manuelh87
-
Michael E. schrieb:
Ich stimme mit Gregor überein, ich erinnere mich an keinen einzigen Punkt in diesem Thread, in dem ich das nicht tue. Ihm seine soziale Kompetenz abzusprechen ist eine Sache, die ich nicht nachvollziehen kann, weil er sich absolut normal verhalten kann. Aber dann auch noch seine sachliche Kompetenz zu bestreiten find ich ungeheuerlich
full ack. Ich würde jetzt gerne noch ein paar Hass-Smileys hinzufügen, aber mehr als 10 kann man sowieso nicht posten und mit dem hier zitierten sind es nur noch 9, das reicht also nicht.