Unterschiede C++/C#
-
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.
-
Manuelh87 schrieb:
Ärm den code kann er nichtmal compilieren
Ui, böse. otze, hiermit verwarne ich dich offiziell, nie wieder beispielcode zu posten, der nicht vollständig und nur zur Verdeutlichung dienen soll. Ich bin außerdem ein netter Mensch und helfe dir:
#include <map> #include <string> using namespace std; int main() { map<string,int> mymap; // map mit werten bestücken... mymap.insert(pair<string, int>("hi", 5)); string myname = "hi"; //was mit der map machen if(mymap.find(myname)!=mymap.end()){ int value= mymap.find(myname)->second;//den zweiten aufruf von find kriegt er nicht weg } }
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.
Klicke bitte bloß nicht auf die ganzen Links die hier inzwischen gepostet wurden. Jeder Satz von dir, der irgendwas aussagen soll beginnt mit "halte ich für blödsinn...", "kann ich mir nicht vorstellen..." aber nirgendwo kann ich einen Informationsgehalt oder Argumente ausmachen. Woher nimmst du deine Überzeugungen?
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!
Natürlich ist das bescheuert, deshalb kannst du jetzt auch ein wenig abstrahieren und dir Situationen vorstellen, wo es nicht so extrem offensichtlich ist wie hier. Ich finde das ziemlich beeindruckend, wenn ein Compiler sowas optimieren kann. Man muss das ja mal auf allgemeinerer Ebene betrachten, wenn ein Compiler sowas drauf hat, kommt dir das überall zu Gute. Du erwartest doch von einem C++ Compiler auch, dass wenn du ein großes Objekt by value zurückgibst, er Code generiert, der die Adresse übergibt und das Objekt direkt schreiben lässt. Trotzdem ist es für dich geil, wenn du es so schreiben kannst, als würde es zurückgegeben werden, weil du dann gleich weiterhacken kannst:
foo.getMyFatObject().someMethod();
Das ist halt schöner als
Class bar; foo.getMyFatObject(&bar); bar.someMethod();
Diese Problematik existiert so in Java nicht und daher erwartet man sich andere Abstraktionsmöglichkeiten, ohne dafür bezahlen zu müssen.
Nur weil ich mir was nicht vorstellen kann heißt das ja nicht das es nicht existiert...
Das hört sich doch gut an.
-
Manuelh87 schrieb:
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...
Ich habe nie bestritten, dass es Supercodes gibt, mir war nur neu, dass sie aktuellen Compiler schon damit umgehen können, obwohl Mathias Fradmann sein Buch noch nicht herausgebracht hat.
-
Optimizer schrieb:
Klicke bitte bloß nicht auf die ganzen Links die hier inzwischen gepostet wurden. Jeder Satz von dir, der irgendwas aussagen soll beginnt mit "halte ich für blödsinn...", "kann ich mir nicht vorstellen..." aber nirgendwo kann ich einen Informationsgehalt oder Argumente ausmachen. Woher nimmst du deine Überzeugungen?
Bin eben sehr selbstbewusst und nehme meine überzeugung aus der luft
Nein, ernsthaft Ich hab natürlich auf eure links geklickt... sogar noch weiter geklickt auf die "unter" links
Nur hab ich da nur wertloses qua qua gelesen und keinerlei ergebnisse dieser angeblich so tollen optimierungen. Außerdem bezweifel ich mal einfach das diese optimeriungen soviel rausholen wie beim analysieren reingesteckt wird. Ich mein er kann ja nicht alles optimieren. Und der fakt das du es auch bemerkenswert findest das er das kann unterstreicht doch auch das es recht komplex ist sowas zu finden ergo auch recht viel leistung verbraten wird. Gut muss nicht unmengen sein aber ich mein weil er eine von 10 stellen gut optimiert kann er noch immer bei den andren 9 soviel zeit mit analysieren verbraten das er im endeffekt langsamer ist als vorher oder zumindest den performenc-gain zunichte macht... also wie du siehst hab ich mir schon auch gedanken gemacht... Aber ich bin offen für kritikcu Manuelh87
-
Walli schrieb:
Ich habe nie bestritten, dass es Supercodes gibt, mir war nur neu, dass sie aktuellen Compiler schon damit umgehen können, obwohl Mathias Fradmann sein Buch noch nicht herausgebracht hat.
Hör ich da ironie raus? pf... keine Supercodes... als nächstes willst du mir erklärenen das es keinen Weinachtsmann gibt
-
Manuelh87 schrieb:
Gut muss nicht unmengen sein aber ich mein weil er eine von 10 stellen gut optimiert kann er noch immer bei den andren 9 soviel zeit mit analysieren verbraten das er im endeffekt langsamer ist als vorher oder zumindest den performenc-gain zunichte macht...
Der Performance-Gewinn kannst du gar nicht zunichte machen, weil die Optimierung etwas ist, was einmal getan werden muss, während der Code ständig wieder aufgerufen wird.
Natürlich kommt weiterhin hinzu, dass die Hotspot VM (woher sie auch ihren Namen hat) nur die Hotspots so krass optimiert. Dort ist der Performance-Gewinn dann auch signifikant. Genau mit der Hotspot-VM ist Java der Performance-Durchbruch gelungen, davor konnte man es guten Gewissens als lahm bezeichnen.
Das zeigt doch, wie erfolgreich das Konzept ist und das, obwohl es noch relativ neu ist.Wie auch immer, ich will ja gar keinen Vergleich anstellen, ob es vielleicht besser ist, als klassische Compilierung. Aber das zur Laufzeit auf Grund des Laufzeitverhaltens nochmal nach-optimiert wird, und dass es auch was bringt, kannst du schon glauben.
-
Ui, böse. otze, hiermit verwarne ich dich offiziell, nie wieder beispielcode zu posten, der nicht vollständig und nur zur Verdeutlichung dienen soll. Ich bin außerdem ein netter Mensch und helfe dir:
snief
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!
du schaust dir also lieber 5 seiten quellcode durch als in 2 zeilen präzise das problem serviert zu bekommen? solche situatonen wie ich sie heir grad gezeigt hab gibts andauernd. nur halt fast nie so offensichtlich. hier im forum wimmelts davon.
aber extra für dich noch ein writeres vertrautes beispiel:
vector<int> vec; //... for(std::size_t i=0;i<vec.size();++i){ //... }
auch wenn in der for schleife an vec nichts gedreht wird, kann der compiler den wiederholten aufruf von size() unter bestimmten umständen nicht rausoptimieren. Dies ist aber implementationsabhängig:
//wenn size so implementiert ist, fliegt die funktion komplett raus: std::size_t size(){ return m_size; } //bei der implementation kann zwar der funktionsaufruf gekickt werden, die berechnung aber nicht std::size_t size(){ //m_begin m_end sind die start/endzeiger des feldes return std::distance(m_begin,m_end); }
-
Manuelh87 schrieb:
Walli schrieb:
Ich habe nie bestritten, dass es Supercodes gibt, mir war nur neu, dass sie aktuellen Compiler schon damit umgehen können, obwohl Mathias Fradmann sein Buch noch nicht herausgebracht hat.
Hör ich da ironie raus? pf... keine Supercodes... als nächstes willst du mir erklärenen das es keinen Weinachtsmann gibt
Du kannst mir ja mal erzählen, was DU unter Supercodes verstehst, ich muss jedenfalls schon schmunzeln weil ich dabei an den besagten Thread erinnert werde. Und dann erklärst du mir am besten noch, warum Assembler-Code niemals so schnell sein kann wie inline und Template-Tricks.
-
otze schrieb:
[
vector<int> vec; //... for(std::size_t i=0;i<vec.size();++i){ //... }
sry aber sowas würd ich auch nie machen... zeig mir mal bitte ein "nicht offensichtliches Beispiel... ich mein du redest nur von der existenz solcher beispiele aber bis jetzt war das alles völlig klar.
Da waren ja noch die Müllbeispiele von deiner seite besser *BöseKritikMach*
Na ihr wisst schon wie ich das mein... irgendwie seh ich einfach nirgendst nen richtigen anwendungsbereich... ich mein das sind alles nur fehler im stil sonst nix.@ Walli Ich hab doch schon bedeuert dass ich das vorschnell geschrieben habe! Ich hab eben nicht an die asm templates gedacht und inline. Aber an sonsten find ich schon das dieser code extrem gut ist (kann leider keinen link geben weil ich ned weiß wo genau das war...) immerhin viel schneller als die gewöhnliche variante (mit voller optimierung vom compiler) und ich kann mir nicht vorstellen das mann es viel besser in pure asm hinkriegt zumindest nicht mit meinem Wissen. Hab ja schon beschrieben wie die struktur ist und ich mein was will man da noch verbessern? Ich weiß nix. Und wenn du jetzt ne funktion in asm machst dann ist sie so wie sie ist... da wird nixmehr optimiert und defakto kann er keine werte in registern halten (konkretes beispiel vektoraddition) da es ja nicht so geschrieben ist aber da bei c++ die register nicht fix sind kann da unter umständen besserer gesamtcode rausschauen (mit dieser funktion die irgendwo aufgerufen wird (bzw geinlined) ) allerdings mein ich da jetzt nur asm ohne templates und so. Zum Beispiel eine Vektoraddition die von vornherein schon klar ist oder wo ein teil bekannt ist da könnte es doch sein das gleich ne ganze menge erstzt wird.. das ist doch so in der asm routine nicht möglich?? Meint ihr nochimmer das es blödsinn ist... ich kann mir das genau vorstellen... na sagt mir halt was ihr davon haltet.
Nochwas:
warum Assembler-Code niemals so schnell sein kann wie inline und Template-Tricks.
Davon rede ich ja nicht... was ich sagen will ist das die implementation von einer gut geschriebenen trickreichen C++ routine bzw ausdruck durch optimierungen von vielleicht fixen sachen die schon bekannt sind (z.b. ein vektor in der gleichung oder geschicktes sachen im register lassen) besser sein KANN als die einer asm routine da man hier ja fix sagen muss welche register man verwendet und wie soller er das optimiertn?? (templates ausgenommen)
Früher wollt ich auch viel mit asm optimieren aber die einzig gute möglichkeit das zu tun mit gcc ist das man eben diese template asm sachen verwendet und die sind meiner Meinung nach nicht so einfach... alles andere schlägt sich nur mit den optimierungen des compilers und wird unter umständen gar nicht so gut übersetzt weil der compiler nix damit anfangen kann....
mfg Manuelh87