was ist schneller: i=i+2 oder i+=2?

Betrachten Sie das folgende code-snippet:

for(i=0;i<10;i+=2) //1
for(i=0;i<2;i=i+2) //2

Welches wird besser zu nutzen?

Macht es einen Unterschied in der Leistung?

  • Haben Sie versucht, timing? Was haben Sie herausgefunden?
  • Die zweite wird schneller sein, da der gebunden ist, ist unterschiedlich.
  • könnten Sie das genauer erklären? Sie bedeutete das 2 vs 10?
  • Ich nahm an, dass die Grammatik-Regeln berechnen, die direkt i=i+2 und müssen einen übergang für i+=2, so würde ich sagen, ich=ich+2 ist schneller, aber nicht sicher, ob es die richtige Erklärung ...
  • Mit jeder halbwegs gute compiler, die Schrittweite wird die gleiche Geschwindigkeit so oder so (d.h., x+=n; und x=x+n; produzieren identischen code). Es könnte eine Ausnahme sein, wenn Sie definiert die variable als volatile, aber das ist ausreichend ungewöhnlich, dass es kaum lohnt, zu diskutieren.
  • Meinst du das wirklich so vergleichen Sie zwei Schleifen mit verschiedenen oberen Grenzen? So oder so, es ist vielleicht besser, editieren Sie entweder die Frage oder erwähnt diese Absicht ausdrücklich.
  • Lassen Sie mich noch einmal link zu dieses Beispiel, wo 10+ Zeilen code Ergebnis in 5 Maschine Anweisungen. Nicht Geige mit low-level-Optimierungen, die der compiler ist viel besser.

InformationsquelleAutor Green goblin | 2012-08-11
Schreibe einen Kommentar