昨日のバージョンはバグっていたことが判明したので修正。いくら仕事が速くてもちゃんと並び替えられてないのでは意味がありません。
- TX-Cでクイックソート、サンプルコード(改良版の修正版)のダウンロード(qsort20020622.zip、1,947 Bytes)
修正した結果を測定しなおすと、残念ながらそれほど速くなってないみたいです。関数呼び出しのオーバーヘッドとかを気にするよりは、わかりやすく書いたほうがいいというのが今回の教訓ですかね……。
xhtml.txc 304 KB/9845行 |
xhtml.txc (ソート済み) |
html40.txt 773 KB/18914行 |
ログファイル 555 KB/11545行 |
|
---|---|---|---|---|
再帰呼び出し版 | 541 ms | 86905 ms | 1141 ms | 13729 ms |
スタック実装+α版 | 470 ms | 86234 ms | 1001 ms | 13510 ms |
txSort関数版(参考) | 270 ms | 260 ms | 791 ms | 371 ms |
と、結果をまとめてみました。恐ろしいのはすでにソート済みのデータを再ソートしたときで、ソートしていないものと比べて180倍以上の時間がかかってます。対処法はあるみたいなので、やはりこれは直したほうがいいですかね……。
TX-C APIのtxSort関数を使ってやってみた結果も面白いです。ソート済みかどうかは処理時間にほとんど影響がないので(むしろ純粋に処理行数に依存)、やはりアルゴリズムが違うのでしょう。それにしてもやはりネイティブ処理は速い……。