Я просто поместил оба свопа (в виде макросов) в рукописную сортировку, с которой я играл. Версия XOR была намного быстрее (0,1 с), чем версия с временной переменной (0,6 с). Однако XOR повредил данные в массиве (вероятно, тот же адрес, что и Ant).
Поскольку это была быстрая сводная сортировка, скорость версии XOR, вероятно, обусловлена тем, что большие части массива были одинаковыми. Я попробовал третью версию свопа, которая была самой легкой для понимания и имела то же время, что и временная версия.
acopy=a;
bcopy=b;
a=bcopy;
b=acopy;
[Я просто помещаю операторы if в каждый своп, чтобы он не пытался поменяться с самим собой, и теперь XOR занимает то же время, что и остальные (0,6 с)]