待ったまってくれ!!!私が間違っていた。

&a==&bを考慮していなかった・・・おrz!!!
それを考慮しなかったらSWAP_NUM()はC言語最速かもしれないけどね・・・。
やっぱり、safeかつ最速を目指すならばSWAP_FAST32()らしいですよ。旦那。(すなわちPODをswapさせるにはinline assemblerが最高って事ね。)
つことで「どんな風にswappingするか!それが課題だ!」を更新いたしました。
終結

C++によるGenericなswapは
http://d.hatena.ne.jp/Will_NET/20051228の最終結論に書いているようなexchangeなtemplateでyaneSDK3rdのmacro.hにも定義されていような


template<class T>
inline void Swap(T& x,T& y){
T t;
t = x;
x = y;
y = t;
};
のような実装がbetterなわけだ。(追記:std::swap()という選択肢もある)
凝る人なら特殊化してね^^これがbest!!!(よほどライブラリアンな人だけだな。やる人は)
これがTHE KING of Generic Swapping Implementationな訳だ。と勝手に納得!!
そして 一時変数を使うのが値の交換処理における THE KING OF IMPLEMENTATIONな訳だ。ともう一つ納得。
ヾ(^Д^*)ゞ確かめれて良かった。さて・・・


もう、MD5最適化疲れ*1が残っているので勘弁してください。
嗚呼!疲労困憊!}_| ̄|○⇒_|\○_⇒_/\○_⇒____○_ { zoo...
追記:ちょっと回復
またSwap処理祭りのリンク集先でにてやっぱりコンパイラに任せたほうが何かとイイとか書いていました。結局はhttp://d.hatena.ne.jp/studiokingyo/20051229#p1の格言に行き着くわけですね。


アセンブラ覚えたて学生の小手先テクはコンパイラ一筋職人の執念の結晶には到底及ばないと・・・。
コンパイラ作る人偉いよ!!!