多項式クラスを速くしたいが、
そのために基礎的な実験をしておこう。
push
Arrayのpushを派手に使っている。
使い勝手や見栄えがいいのでついつい使っているが、
これはたぶん遅い。
Arrayオブジェクトを作って0〜9を代入することを考える。
これを10万回実行するための時間を速くしよう。
var n = 10;for(var i = 0; i < n; i++) {
var a = [ ];
for(var j = 0; j < 10; j++)
a.push(j);
}
これをこう書くと、
for(var i = 0; i < n; i++) {
var a = [ ];
for(var j = 0; j < 10; j++)
a[j] = j;
}
4250ms → 2053msとなった。
やはりpushは遅い。
ちなみに、
for(var i = 0; i < n; i++) {
var a = [ ];
for(var j = 0; j < 10; j++)
;
}
が491ms、
for(var i = 0; i < n; i++) {
var a = [ ];
}
が、305ms、
for(var i = 0; i < n; i++) {
;
}
が、27ms。
まとめると、
var a = [ ]; // 2.8μs
a[i] = i; // 1.6μs
a.push(i); // 3.8μs
あと、
var a = [ ];
の代わりに、
var a = new Array();
とか、
var a = new Array(10);
とすると、少し遅くなるようだ。