Schnellste Methode zur Berechnung des Absolutwerts mit SSE
ch kenne 3 Methoden, aber soweit ich weiß, werden im Allgemeinen nur die ersten 2 verwende
Maskiere das Vorzeichen-Bit mitandps
oderandnotps
.
Subtrahieren Sie den Wert von Null, um ihn zu negieren, und ermitteln Sie dann das Maximum des Originals und des Negierten.
Pros: Feste Kosten, da zum Abrufen nichts erforderlich ist, wie eine Maske.Cons: Ist bei idealen Bedingungen immer langsamer als die Maskenmethode, und wir müssen auf das @ wartsubps
muss ausgefüllt werden, bevor das @ verwendet wimaxps
Anweisung Ähnlich wie bei Option 2, subtrahieren Sie den ursprünglichen Wert von Null, um ihn zu negieren, aber dann "bitweise und" das Ergebnis mit dem Original mithilfe vonandps
. Ich habe einen Test durchgeführt, der dies mit Methode 2 vergleicht, und es scheint sich, abgesehen vom Umgang mit @, identisch mit Methode 2 zu verhalteNaN
s, in diesem Fall ist das Ergebnis ein anderesNaN
als das Ergebnis von Methode 2.
andps
ist normalerweise schneller alsmaxps
.Cons: Kann dies zu unbeabsichtigtem Verhalten führen, wennNaN
s sind beteiligt? Vielleicht nicht, weil einNaN
ist immer noch einNaN
, auch wenn es ein anderer Wert von @ iNaN
, richtigGedanken und Meinungen sind willkommen.