Das für mich wichtigste KO Kriterium zum XOR Swap wäre, dass beim XOR Swap die 2 Werte verloren gehen können, wenn es sich um gleiche Werte handelt, da dabei ein Werte dann auf 0 gesetzt wird, z.B.:
Pseudocode:
Code:
a = 1
b = 1
xor swap a, b
--> a == 0
--> b == 1
Zusammenfassend würde ich zum XOR Swap sagen:
- XOR Swap ist nice to know
- XOR Swap löscht Inhalte von Variablen, wenn diese den gleichen Wert haben
- XOR Swap ist weniger leicht menschenlesbar in einer Hochsprache wie C / C++
- XOR Swap wird evtl. nicht vom Compiler/Optimizer erkannt und optimiert und somit 1:1 umgesetzt
- XOR Swap kann nicht vom Prozessor parallelisiert werden, da jede Anweisung abhängig von dem Ergebnis der vorangehenden Anweisung ist
- Alternative: x86 Prozessoren unterstützen die XCHG Anweisung, die vom Compiler verwendet werden kann, wenn er einen Swap in der Hochsprache erkennt, was den Tausch auf 1 Anweisung (Asm Befehl) reduziert