組込みのsortが自作ソートより遅いらしい

http://blog.livedoor.jp/dankogai/archives/50695905.html


さもありなんという感じだ。
pushもsliceも遅かったし。


http://d.hatena.ne.jp/inamori/20061107


実際にやってみたところ、
IE6では自作ソートの方がやや遅い、
Firefox1.5でも同様だった。


ただ、このコードを見るともうちょっと速くできそうだ。
ほとんど他人のふんどしで失礼だが、
ちょっと改変してみよう。


function SortBench(n){
...
var qsort = function(ary, cmp){
function q(ary, head, tail) {
...
return ary;
}
return q(ary, 0, ary.length - 1);
}
...
};

このqは外に出したほうが速い。


function SortBench(n){
...
var qsort2 = function(ary, cmp){
return q(ary, 0, ary.length - 1, cmp);
}
...
};

function q(ary, head, tail, cmp) {
...
}

安定すると思うので、
WSH/JScript5.6で、
長さ10000の配列を10回ソートしてみた。
(IE6・Firfox1.5で実行するより1.5倍は速い)

builtin qsort qsort2
平均(ms) 647 917 849
標準偏差(ms) 7.4 23.3 22.1

(qsort2が改変したコードによるもの)
Builtinよりは速くならなかったが、少し改善した。
ちなみに、Firefox1.5では1.6倍くらい速くなって逆転した。


他にも細かな改善点があったのだが、有意な差はでなかった。
WSH/JScript5.1では速くなっていたんだが。


いいネタをもらったので、
これから逐一メソッドについて検証していこう。
これで1ヶ月は遊べそうな気がする。