Die einzige Möglichkeit, dies herauszufinden, ist ein gründliches Benchmarking, und die schnellsten Implementierungen variieren von Plattform zu Plattform. Verwenden Sie ein Tool wie Caliper , wenn Sie dies wirklich optimieren müssen.
Sie können dies zu Longs und mehr als einer Bitverschiebung verallgemeinern, wenn Sie möchten
%Vor%
unter der Annahme ByteBuffer.wrap
ist definiert.
___ qstnhdr ___ Was ist der schnellste Weg, um eine richtige zirkuläre Bitverschiebung für ein Byte-Array durchzuführen?
___ answer10468521 ___
Sie können byte[]
durch ByteBuffer.asLongBuffer()
ersetzen
Außerdem brauchst du long
nicht, wenn du schiebst.
Auch wenn es egal ist, kann das Hinzufügen von final zu %code% oder das Verschieben der Deklaration aus der Schleife ein kleines bisschen helfen.
Eine andere Sache könnte versuchen:
%Vor%
Dann lösen Sie danach Bytes [bytes.length-1].
Diese umgekehrte Schleife kann auch helfen, wenn Sie abergläubisch sind. Ich habe es schon vorher gesehen.
Schleifenanalyse pro Durchlauf:
deins: 3 Aufgaben, zwei Schichten, eine oder eine Besetzung.
meins: 2 Aufgaben, zwei Schichten, eine oder eine Besetzung.
Verwenden Sie %code% , um einen Puffer zu erhalten, der Ihr %code% umschließt und dann %code% , um eine Ansicht zu erhalten, mit der Sie %code% s wie von @ NiklasB vorgeschlagen extrahieren und bearbeiten können. Dadurch wird die Fähigkeit der Hardware genutzt, größere Teile von Bits zu verschieben.
___ tag123bitmanipulation ___ Die Manipulation einzelner Bits. Verwendete Operatoren können bitweise UND, ODER, XOR, NICHT, Linksverschiebung und Rechtsverschiebung enthalten.
___ tag123performance ___ Für Fragen zur Messung oder Verbesserung der Code- und Anwendungseffizienz.
___ tag123optimierung ___ Optimierung ist der Akt der Verbesserung einer Methode oder eines Designs. In der Programmierung nimmt die Optimierung normalerweise die Form an, die Geschwindigkeit eines Algorithmus zu erhöhen oder die benötigten Ressourcen zu reduzieren. Eine weitere Bedeutung der Optimierung sind numerische Optimierungsalgorithmen.
___ qstntxt ___
Wenn ich das Array habe:
%Vor%
Das Ergebnis für eine 1-Bit-Verschiebung ist:
%Vor%
Die Array-Größe ist nicht festgelegt, und die Verschiebung wird von 1 bis einschließlich 7 sein. Zur Zeit habe ich den folgenden Code (was gut funktioniert):
%Vor%
Gibt es dafür einen schnelleren Weg als meinen derzeitigen Ansatz?
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen.
___