Welche ist schneller? Vergleich oder Zuordnung?

Mache ich eine bit-Codierung, wo ich dies Schreibe, sort code:

if( array[i]==false )
    array[i]=true;

Frage ich mich, ob es sollte neu geschrieben werden als

array[i]=true;

Stellt sich die Frage: sind Vergleiche schneller als die Aufträge?

Was über die Unterschiede von Sprache zu Sprache? (Kontrast zwischen java & cpp, zB.)

HINWEIS: ich habe gehört, dass die "vorzeitige Optimierung ist die Wurzel allen übels." Ich glaube nicht, dass hier gilt 🙂

  • es sei denn, Sie schreiben ein Programm für ein embedded-system mit einem sehr langsamen Prozessor, dann müssen Sie sich keine sorgen. Auch an diesem Punkt würden Sie nur ungern an der hand-optimieren
  • Kann array[i] alles andere als ein bool? wenn nicht, dann wird der rewrite richtig ist.
  • Ja, das array ist ein boolean-array.
  • Zu jeder Buchung "Meinungen" auf, was ist schneller und warum, bitte aufhören. Der EINZIGE Weg, zu wissen, was schneller für einen bestimmten compiler auf einem bestimmten Prozessor ist es zum benchmark. Meinungen zählen nicht, wo etwas gemessen werden kann und getestet werden. Der Fragesteller ist dies nicht etwas zu befürchten, aber wenn es sein muss, dann testen Sie es über 1.000.000 Iterationen, erhalten durchschnittlich mal für mehrere Läufe, ändern Sie es und sehen, was der Unterschied ist. Theoretisch kann man schneller sein als die anderen, aber für einen primitiven Datentyp, werden Sie praktisch identisch.
  • Worrier: Woher wissen Sie, dass 1000000 Iterationen ist die richtige Größe für das array? Mit modernen Prozessoren Vermeidung von cache-misses ist der wichtige Teil, nicht mitgerechnet instruction cycles. So sollte das benchmark laufen mit realistischen Daten Größe.
  • Ähnlicher thread mit Antworten: stackoverflow.com/q/23228359/632951

InformationsquelleAutor jrharshath | 2009-05-26
Schreibe einen Kommentar