Diskussion zum Thema "Optimierung im Quelltext hilft dem Compiler"
-
@junix: Das gehörte nicht wirklich hier hinein, wie heißt es so schön: Ont Topic - one thread and one thread - one topic. Und irgendwie habe ich das dumme Gefühl, dass du etwas persönliches gegen mich hast... nunja, um auf deinen vorletzten Beitrag hier im Thread zu antworten: Es ist ein Unterschied, ob du ++i oder i++ machst, bei i++ wird erst eine Variable erzeugt und so weiter... bei ++i wird direkt nur eins drauf gezählt, weshalb ++i schneller ist. Nur daran dachte ich, keinen extra Integer zu erzeugen. Ich hoffe, dass ich dir und einigen anderen klar machen konnte, dass man sehr wohl dem Compiler unter die Arme greifen kann. Nicht immer, aber oft.
@|23|: Ich hatte auch erst in meiner Ausbildung mit C++ zu tun, vorher nur HTML gemacht. Klar sah mein Quelltext nicht so gut aus wie jetzt, und auch nicht unbedingt besser als deiner. Ich wollte dir nur mal zeigen, was noch alles beachtet werden konnte. Klar, wenn man es ganz raffiniert macht, könnte man das gesamte Feld "Nummer" in deiner Ini-Datei auslassen... Hast du Interesse mehr C++ zu lernen als nur in der Ausbildung? Wenn ja, dann bist du in meinem Club sehr willkommen... Siehe Anhang.
-
Windoof schrieb:
Und irgendwie habe ich das dumme Gefühl, dass du etwas persönliches gegen mich hast...
nö... nur gegen deine falschen Informationen.
Windoof schrieb:
Es ist ein Unterschied, ob du ++i oder i++ machst, bei i++ wird erst eine Variable erzeugt und so weiter... bei ++i wird direkt nur eins drauf gezählt, weshalb ++i schneller ist
Testen wirs doch einfach mal, ne?
Folgende Zeilen kommen in eine Button-Click-Routine:int i = 0; i++; ++i;
Was macht nu der Compiler draus?
;Unit1.cpp.22: int i = 0; xor eax,eax mov [ebp-0x0c],eax ;Unit1.cpp.23: i++; inc dword ptr [ebp-0x0c] ;Unit1.cpp.24: ++i; inc dword ptr [ebp-0x0c]
So... was ist nun an Zeile 24 schneller als an Zeile 23?
Andere Hinweise liefert auch Japro in dem von mir genannten Artikel. Da du offensichtich zu faul warst da nachzulesen, zitiere ich dir mal die Quintessenz:japro schrieb:
schlussfolgerung: der compiler weiss es eh besser und diese mikrooptimierungen, die schon seit etwa 20 jahren in programmiererkreisen kursieren, sind (man glaubt es kaum) auch schon zu den compilerprogrammierern vorgedrungen und die haben die in ihre compiler eingebaut
.
Windoof schrieb:
Ich hoffe, dass ich dir und einigen anderen klar machen konnte, dass man sehr wohl dem Compiler unter die Arme greifen kann. Nicht immer, aber oft.
Bei solchen Banalitäten wie sie du betreibst allerdings... nicht.
Dazu eben ein kurzer beweis:Folgenden Code jagen wir durch den BCB-Compiler:
int i = rand(); i++
Ergebnis:
;Unit1.cpp.22: int i = rand(); call CC3260MT._rand mov [ebp-0x0c],eax ;Unit1.cpp.23: i++; inc dword ptr [ebp-0x0c]
Hoppala.... ob Japro wohl doch recht hatte?
Noch Fragen, Kienzle?
-
Die Diskussion entsprang hier:
http://www.c-plusplus.net/forum/viewtopic.php?p=592413#592413-junix
-
Hallo
die Frage ist gehoert das eigentlich noch hierher ?
oder nicht bessert "nach Rund um doe ..."
@Windoof
lass doch bitte endlich dein "ich bin aber klueger" Postings
die dann doch nur in endlose Streitpostings ausartetMfG
Klaus
-
Dieser Thread wurde von Moderator/in junix aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Haste natürlich recht, Klaus (o:
Hab nicht soweit nachgedacht (o: sorry (o:
-junix
-
Warum eigentlich
xor eax,eaxIst das schneller als
mov eax, 0
?
-
nein, ist nicht schneller, hat aber einen kleineren Opcode und macht so das Binary kleiner. (Ja x86er sind kein RISC ;))
-
K, thx