Ich würde gerne wissen, ob das Ausführen einer logischen Rechtsverschiebung schneller ist, wenn um eine Potenz von 2 verschoben wird. Ich benutze C++.Ist eine logische Rechtsverschiebung um eine Potenz von 2 schneller?
Zum Beispiel als
myUnsigned >> 4
schneller ist
myUnsigned >> 3
Ich schätze, dass erste Antwort der jeder wird sein, mir zu sagen, dass man nicht über winzig kleine Dinge wie diese sorgen sollte, ist es Verwenden Sie korrekte Algorithmen und Sammlungen, um wichtige Größenordnungen zu reduzieren. Ich stimme dir vollkommen zu, aber ich versuche wirklich, alles aus einem Embedded-Chip herauszuquetschen (ein ATMega328) - ich habe gerade eine Leistungsveränderung, die einem "Woohoo!" Würdig ist! indem ich eine Kluft durch eine Bit-Verschiebung ersetze, verspreche ich dir, dass das wichtig ist.
Vielen Dank.
Warum messen Sie sich nicht? –
Wen interessiert es, wenn 'x >> 4' schneller ist als' x >> 3'? Sie haben unterschiedliche Semantiken, es spielt also keine Rolle, wer schneller ist. Wie auch immer, ich habe noch nie eine Architektur kennengelernt, bei der der richtige Operand eines Bit-Shift-Operators irgendwelche Auswirkungen auf die Performance hatte. – fredoverflow
@FredOverflow: Auf dem ATMega nimmt der Bit-Shift-Befehl nicht den Operanden "Anzahl der zu verschiebenden Bits". Bezüglich 'x >> 4' gegen' x >> 3' - vielleicht hat das OP hier einige Freiheiten (zB Festkommaarithmetik und hat einen gewissen Spielraum, wie groß die Bruchkomponente ist) –