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ヶ月は遊べそうな気がする。