Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.07.2010, 12:30

Inkrement/Dekrement als Postfix oder Präfix?

Guten Tag,
natürlich gilt diese Frage nicht für alle Male. Manchmal muss man wirklich nach Zustand des Codes bzw. Lage entscheiden, ob ein Postfix oder Präfix eingesetzt wird.
Wie sieht es aber bei Codeausschnitten aus, in denen man freie Wahl hat?
Nehmen wir als Beispiel mal die While-Schleife:

Quellcode

1
2
3
4
5
while(i<10)
{
   std::cout<<i;
   //Nun i++ oder ++i?
}


Wie man hier sieht, hat man ja eigentlich die freie Wahl. Ich habe desöfteren gehört, dass das Präfix schneller wäre. Es würde nicht zuerst die Variable selbst "dargestellt" werden, sondern sie würde direkt inkrementiert werden. Andernseits höre ich aber auch von Einigen, dass sie "i++" bevorzugen.
Woran liegt nun der genaue Unterschied und welches wäre für eine "freie-Auswahl" eher das Empfohlene?

Liebe Grüße,

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

09.07.2010, 12:55

schau dir mal an wie ein post-inkrement-operator definiert wird. allerdings wird es von dem meisten kompilern zumindest bei primitiven datentypen garantiert so optimiert, dass es keinen unterschied macht.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

09.07.2010, 13:06

schau dir mal an wie ein post-inkrement-operator definiert wird. allerdings wird es von dem meisten kompilern zumindest bei primitiven datentypen garantiert so optimiert, dass es keinen unterschied macht.
Vielen Dank.
Aufgrund vieler Aussagen zum Thema Optimierung, konnte ich mich nicht zurückhalten,
eine Frage diesbzgl. zu stellen. ;)

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

4

09.07.2010, 13:58

premature optimization is the root of all evil

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

11.07.2010, 21:36

ausnahmsweise muss ich tggc zustimmen, sich bei so etwas sorgen machen ist eigentlich totaler unsinn. bei 32-bit prozessoren hast du einen unterschied, wenn der compiler nicht optimiert, von schätzungsweise 2 instruktionen. selbst bei eingebetteten systemen mit 16mhz macht das genau einen unterschied von 0.

was tggc damit sagen soll: optimieren sollte man nur dann, wenn es nötig ist, und dann richtig. denn:

1) du sparst zeit
2) du entdeckst möglicherweise noch andere performance-hits
3) du optimierst sonst deine struktur kaputt, weil du deine halbe architektur auf den kopf stellst, um 2-3 bilder mehr zu haben, bis dahin hast du 2 neue features implementiert oder einen bug entfent!

Werbeanzeige