Ist ++i anders als i++???
-
Die 'professionellen Programmierer' haben eine einfache Zielsetzung: es muß laufen.
Falschrum gedacht. Ähnlich wie: "Ich habe keine Zeit, deshalb lasse ich das Testen dieses eine Mal ausfallen". Am Ende kommt alles wieder zurück. Und dann meist doppelt. Vielleicht lässt sich die "hauptsache es läuft"-Lösung auf den ersten Blick schneller erstellen, aber erstellen ist nicht das einzige im Softwerker-Leben. Code muss schließlich getestet, gewartet und erweitert werden.
Ich bezweifle allerdings auch, dass wirklich professionelle C++ Programmierer weniger Ahnug haben als unser einer. Wenn ich mir da so Magazine wie das CUJ, oder das DrDobbs-Journal anschaue oder ein bischen in englischsprachigen NGs rumsurfe, präsentiert sich mir da ein anderes Bild. Und das sind alles professionelle Programmierer. Nix ausschließlich Hobby.
Ist zwar etwas OT, aber prinzipiell gefällt mir da Uncle Bob's (Robert C. Martin) We will not ship shit-Einstellung. Die setzt natürlich kontinuierliches lernen voraus. Ein "Hauptsache es läuft" ist da nicht ausreichend.
-
Endlich mal wieder eine schöne Diskussion.
Als ich vor einiger Zeit folgende Frage dazu stellte
Was spricht gegen das Post increment?
kam folgende Antwort
Beim Postinkrement muss erst eine temporäre Variale angelegt werden, die den alten wert speichert und zurück gibt.
-
Wenn ich folgenden Vergleich durchführe.
#include <iostream> #include <ctime> #include <conio.h> using namespace std; int main() { const int MAX; cout << "Anzahl Schleifendurchlaeufe? "; cin >> MAX; clock_t t1,t2; double ts; t1=clock(); for(int i=0;i<(MAX);i++) {} t2=clock(); ts=(t2-t1)/static_cast<float>(CLOCKS_PER_SEC); cout << "Zeit bei i++: " << ts << " sec" << endl; cout<<endl; t1=clock(); for(int i=0;i<(MAX);++i) {} t2=clock(); ts=(t2-t1)/static_cast<float>(CLOCKS_PER_SEC); cout << "Zeit bei ++i: " << ts << " sec" << endl; cout<<endl; getch(); }
Warum erhalte ich bei dem hier bevorzugten Praeinkrement eine längere Zeitspanne als bei Postinkrement? (Dev-C++ 4.9.8.2)
-
Warum erhalte ich bei dem hier bevorzugten Praeinkrement eine längere Zeitspanne als bei Postinkrement? (Dev-C++ 4.9.8.2)
1. Wenn man misst, dann bitte nicht nur einmal. Mindestens eine Schleife sollte es sein. Dann Ausreißer weghauen und vielleicht noch Mittelwerte bilden.
2. Wenn man misst, dann bitte nicht nur mit einem Compiler in einer Version
3. Wenn man misst und es ist etwas so furchtbar einfaches, dann ruhig mal den Code anschauen, der generiert wird.
4. Ist euch klar, dass das für ints überhaupt keine Rolle (aus Sicht der Performance) spielt? Jeder halbwegs normale Compiler sollte hier genau den selben Code generieren. Selbst jeder Java-Compiler generiert für ++i, i++ und i+=1 den selben Code.
Wichtig wird der Unterschied bei richtigen Objekten (z.B. komplizierten Iteratoren). Für Postincrement muss hier eine Kopie erstellt werden. Und das kann teuer werden. Ansonsten geht es hier eigentlich mehr um Semantik.
PS: Mein VC generiert im Debug-Modus den selben Code und im Release gar keinen
-
worüber ihr so diskutieren könnt, Wahnsinn!
und dann immer diese genialen Messungen:) Fehlt eigentlich nur noch, dass Ihr Linux und Windows mit ins Spiel bringt. Ich schwanke ja immer zwischen dem C-PlusPlus Forum und den beiden netten Herren Nachts auf Bayern3, die sich nen Kopf drüber machen ob Ihr Gehirn aus Sterbenstaub ist
-
Das C++-Forum läuft rund um die Uhr. Die mental-astralen Rotweintrinker gibt es seltener.
Was ist denn an der Messung oben so falsch?
-
Die mental-astralen Rotweintrinker gibt es seltener
hehe nett formuliert
Naja ich glaube es es echt keinen Unterschied macht ob das prog nun ne 1000 Sek. länger brauch oder nich.. es sei denn es kommt wirklich drauf an. Kommt es denn drauf an?
-
Warum erhalte ich bei dem hier bevorzugten Praeinkrement eine längere Zeitspanne als bei Postinkrement? (Dev-C++ 4.9.8.2)
Lass in deinem Programm mal erst zwei Dummymessungen laufen und mach erst dann die richtigen. Messungen direkt am Anfang des Programms machen bei dem Compiler oft irgendwie Blödsinn.
Ich bezweifle allerdings auch, dass wirklich professionelle C++ Programmierer weniger Ahnug haben als unser einer. Wenn ich mir da so Magazine wie das CUJ, oder das DrDobbs-Journal anschaue oder ein bischen in englischsprachigen NGs rumsurfe, präsentiert sich mir da ein anderes Bild. Und das sind alles professionelle Programmierer. Nix ausschließlich Hobby.
Das die Leute, die für's CUJ und ähnliche Magaziene schreiben was drauf haben habe ich nie bezweifelt. Die die Regelmäßig im Usenet rumhängen sind auch nicht die von mir angesprochene Gruppe. Ich habe aber Programmierer kennengelernt, die sich irgendwie die letzten paar Jahre quasi überhauptnicht mehr informiert haben. Ich habe sogar einen getroffen, der C++ bis 93 gelernt hat und seit dem nichts neues mehr gelesen hat. Ich sage nicht das alle sosind und auch das viele war falsch, aber es scheint mir einige zu geben.
-
Ich sage nicht das alle sosind und auch das viele war falsch, aber es scheint mir einige zu geben.
Sicher gibt es solche. Und es gibt bestimmt auch viele.
Die Frage ist aber natürlich auch was man genau mit "professionell" meint. Wertfrei nur im Sinne von "bekommt Geld dafür" oder packt man gleich noch einen gewissen Anspruch mit dran. Für mich gehört zu "professionell" automatisch immer auch eine gewisse Qualität. D.h. ich würde jemand der Jahre lang nichts neues lernt und vielleicht nichtmal genau was, was er eigentlich macht nicht unbedingt als "professionell" bezeichnen. Insofern reden wir natürlich an einander vorbei
-
please give an code example with time measurement that pre is faster than post. Think would help.