Ist x += 1 effizienter als x = x + 1?

In x = x + 1 ist x zweimal beurteilt? Wenn dem so ist, bedeutet das, dass in x += 1, x wird nur einmal ausgewertet? Wie sind die beiden Ausdrücke werden ausgewertet in Bezug auf compiler Zwischencode?

Beispielsweise x++ könnte bedeuten : die Position x laden Sie den Inhalt x in ein register und erhöhe den Wert von x im Speicher.

Außerdem habe ich gelesen, dass x += 1 ist nützlich, wenn x ist nicht eine einfache variable, sondern ein Ausdruck mit einem array. Irgendwelche Ideen, warum dies der Fall ist?

  • Das klingt wie eine Menge von unbegründeten Annahmen, insbesondere der Titel. Ich sehe keinen Grund, warum sollte man effizienter sein als die anderen und ich bin mir relativ sicher, dass es nicht der Fall ist, die auf die meisten C-Compiler.
  • Ein compiler das Geld Wert, das Sie dafür bezahlt wird, kompilieren Sie beide Ausdrücke auf das gleiche Objekt-code. Wenn Sie besorgt über die Leistung: Messen, Messen, unterschiedliche Codes, unterschiedliche Zusammenstellung flags, die unterschiedliche Ressourcen-Nutzung, verschiedene alles.
  • Wissen Sie, dass x += 1 ist effizienter als x = x + 1? Haben Sie schaute auf die generierte Objekt-code?
  • Vielleicht war dies gegebenenfalls auch ältere Compiler..ich bin neugierig, warum man könnte effizienter sein, als die anderen in einem älteren compiler...ich Las darüber in einem Buch mit dem Titel "Deep C Secrets".
  • Wie über die Suche nach einigen Büchern, die nicht 17 Jahre alt?
  • Es ist denkbar, einen Unterschied in C++ (wenn x ist ein UDT), aber es sollte kein Unterschied in C.
  • Ok..also, wenn x ist ein vom Benutzer definierter Typ, wie würde x =+1 effizienter sein?
  • Fragen über UDTs ist eine andere Frage. Diese Frage ist etwa C.
  • Es ist nicht nur ein Duplikat ist; diese Frage hat eine falsche Annahme in der Betreff-Zeile.
  • Ja, das war mein Punkt...

InformationsquelleAutor user7 | 2011-09-19
Schreibe einen Kommentar