C言語版 Flash sortは遅い!?

コメントにてMisty氏からFlash sortの事について情報をいただいたのでちょこっと実験してみた。
flash sortはデフォルトの実装*1でquick sortはstd::sortで
0.0から1.0までの一様にランダムな512k個のdoubleのデータでは

flash sort / 860934063
flash sort call count = 0
std::sort / 1582491769
fs:860934063
qs:1582491769

おお!flash sort速いじゃん!
でも、幸せはつかの間…

flash sort / 921460535
flash sort call count = 0
std::sort / 270692634
fs:921460535
qs:270692634

Releaseモードでコンパイル(最適化)するとどうしてもquick sortに勝てないのです… orz ダメジャン
どんなにデータの分布を変えたりデータの大きさを変えたりしても全然ダメみたい。
良くてquick sortの4倍は処理時間がかかる。
ってか遅いね…flash sort…何処にでも適用できるものではないみたい…。
でも、comb sort(コムソート)と比較してみたけどどうにかこうにかflash sortの方が処理速度は速かった。


ちなみにデータが一様にランダムでないとFlash sortのデフォルトの実装ではstack over flowを起こします。