odd even merge sort

http://d.hatena.ne.jp/yupo5656/20060617/p1
より。
SYN氏の「分岐しないソート」の記事については前々からチェックしていたのだが、このOdd-even mergesortというのは初耳だった。

記事を読み進めていくと意外なハックにとても驚嘆!

このソート関数の冒頭に、 compare_and_swap(a,b); している箇所があります。ここを、「compare a,b; conditional_swap a,b; のようなアセンブリ言語のコードをprintfする」処理に置換すれば、ソート関数が、「分岐しないでソートを行うアセンブリ言語ソースコードを吐くプログラム」に化けるわけです。

なんと!そんな使い方があるのですか!私自身、アルゴリズムを記述しているコードから別のコードを出力するなんて事を考えたこと無かったのでとても驚いている。
また、この日記で使われているgoogle:cachegrindというキャッシュヒット率測定ソフトも知らなかったので今後使用したいと思っている。

追記:ちょっとしらべたらgoogle:CPUSpyなるソフトウェアを発見
http://www.sinnercomputing.com/CPUSpyR.htm