2006-11-01から1ヶ月間の記事一覧

JScriptのメソッドの速度/shift

長さ1000のArrayを用意して、 前から順に最後まで取り出していく。 これを10回繰り返して、平均を取る。 // 227ms function test1(a) { for(var i = 0; i a.shift(); } }shiftの代わりに次のようなコードも試した。 // 505ms function test2(a) { for(var i …

JScriptのメソッドの速度/push

これから、JScriptの組込みオブジェクトのメソッドと それを自作したものとの速度を調べていこうと思う。 WSH/JScript5.6で。 まずは手っ取り早いpushから。 pushをm回続けて行う。 これをn=1e6/m回繰り返す。 この実行時間を10回測定する。 function test1(…

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

http://blog.livedoor.jp/dankogai/archives/50695905.html さもありなんという感じだ。 pushもsliceも遅かったし。 http://d.hatena.ne.jp/inamori/20061107 実際にやってみたところ、 IE6では自作ソートの方がやや遅い、 Firefox1.5でも同様だった。 ただ…

JScript高速化(17)

あとちょっとだけ。 約分のところを改善できる。 function fraction_normalize() { // ユークリッドの互除法 var a = this.a; var b = this.b; var a2, f; while(true) { if((a2 = a % b) == 0) { f = b; break; } if((b %= a) == 0) { f = a; break; } a = …

JScript高速化(16)

係数を分数にしよう。 fractionも今までと同じ手法で高速化を行った。 16.7sが、100回で34.3sと、約50倍速くなった。 もうちょっと速くなると思ってたんだが。ソースは隠しておく。

タイトル

予算は倍増になるらしい。 新たなタイトルを考えないと。

JScript高速化(15)

あと高速化していないのは、合成のメソッドくらいだが、 // 合成 function poly_synthesize(p) { if(!(p instanceof poly)) throw("unsupported argument in poly::synthesize"); var r = new poly(); for(var i = this.length - 1; i >= 0; i--) r = r.mult…

東京

刈谷 5:45 〜 5:51 知立 三河線 知立 5:55 〜 6:34 豊橋 名鉄本線 豊橋 6:51 〜 8:10 島田 島田 8:16 〜 10:07 熱海 熱海 10:14 〜 11:01 平塚 平塚 11:05 〜 11:56 品川 品川 11:57 〜 12:02 浜松町 六本木一丁目 14:53 〜 14:55 溜池山王 東京メトロ南北線…

JScript高速化(14)

元々何をしようとしているか思い出しておこう。 0

JScript高速化(13)

2次と4次の多項式の掛け算は次のようになる。 f(x) = a0 + a1x + ... + a6x6 g(x) = b0 + b1x + ... + b2x2 h(x) = c0 + c1x + ... + c4x4 f(x) = g(x)h(x)とすると、 a0 = b0c0 a1 = b0c1 + b1c0 -------------------- a2 = b0c2 + b1c1 + b2c0 a3 = b0c3 +…

JScript高速化(12)

multiply 1に1+xを9回掛けるを1万回繰り返す。 // 13091ms this.multiply = function(p) { var r = new poly(); if(typeof p == "number") { for(var i = 0; i r.a[i] *= p; } else if(p instanceof poly) { for(var i = 0; i for(var j = 0; j if(r.a[i+j] …

JScript高速化(11)

型の判別 加算は、引数に数値と多項式が取れるようにしている。 this.add = function(p) { var r = new poly(); // 返り値の準備 if(typeof p == "number") { // 引数が数値だったときの処理 } else if(p instanceof poly) { // 多項式だったときの処理 } el…

東京

刈谷 6:20 〜 7:07 豊橋 豊橋 7:23 〜 8:00 浜松 浜松 8:17 〜 10:49 熱海 熱海 11:00 〜 12:07 横浜 横浜 12:12 〜 12:38 渋谷 東急東横線 渋谷 12:43 〜 12:58 池袋 山手線 池袋 15:23 〜 16:33 平塚 湘南新宿ライン 7分遅れ 平塚 16:44 〜 17:33 熱海 熱…

JScript高速化(10)

ここからは個別に高速化していこうと思う。 あまり一般的な手法は得られない気がする。 add // 加算 this.add = function(p) { var r = this.copy(); if(typeof p == "number") r.a[0] += p; else if(p instanceof poly) { for(var i = 0; i if(i r.a[i] += …

トヨタ、いすゞのエンジン搭載

中日新聞は後追い?第1弾は1.7。

いすゞに中小型車向けエンジン求める

http://www.asahi.com/business/update/1109/044.html 1.4、3は自主開発 2、4はいすゞが開発 これ、ホントなの?

東京

刈谷 10:46 〜 11:18 豊橋 豊橋 11:27 〜 13:16 用宗 用宗 13:17 〜 14:04 静岡 徒歩 静岡 14:47 〜 16:10 熱海 熱海 16:15 〜 16:36 小田原 小田原 16:47 〜 18:11 新宿 小田急 新宿 18:20 〜 18:25 池袋 埼京線 池袋 23:09 〜 23:16 新宿 埼京線 新宿 23:4…

いすゞと提携

http://www.asahi.com/business/reuters/RTR200611080005.html いすゞが小型ディーゼルを開発。 アレはなくなるってこと?

JScript高速化(9)

まとめの後半。 6. 組込みオブジェクトを拡張すると速くなることがある Array.prototype.copy = poly_copy;function poly_copy(p) { ... }このようにすると、Arrayにcopyメソッドが追加される。 ユーザ定義型より組込み型のほうが速いときは、 こうすると速…

JScript高速化(8)

ここでいったんまとめを。 Arrayオブジェクトの拡張というのはちょっと気持ち悪いから、 本当は継承できたらいいのだが、 どうもうまくいかないし、 できても遅そうなので追究はしない。 まとめ 1. Arrayのpushは使うな 2. Arrayのコンストラクタは[ ]を使う…

JScript高速化(7)

r[i] = this[i];はエラーだったが、 そういえば、これをやっていなかったような気もする。 var a = this; r[i] = a[i];あ、動くね。 やったと思っていたのに。 function poly_copy() { var r = new poly(); var a = this; for(var i = this.length - 1; i >=…

大阪

刈谷 9:56 〜 11:20 米原 米原 11:23 〜 12:43 大阪 大阪 12:57 〜 13:05 弁天町 大阪環状線 弁天町 13:11 〜 13:19 コスモスクエア 地下鉄中央線 コスモスクエア 16:08 〜 16:16 弁天町 地下鉄中央線 弁天町 16:20 〜 16:28 大阪 大阪環状線 大阪 16:30 〜 …

東京

刈谷 7:21 〜 7:53 豊橋 豊橋 8:09 〜 8:40 浜松 浜松 8:47 〜 11:24 熱海 熱海 11:32 〜 11:53 小田原 小田原 12:00 〜 13:17 池袋 湘南新宿ライン 池袋 15:53 〜 17:13 小田原 湘南新宿ライン 小田原 17:25 〜 17:48 熱海 熱海 17:52 〜 21:25 豊橋 豊橋 2…

JScript高速化(6)

prototype 昨日のはメソッドを書いていなかったから、 それを書き足すと、 // 5027ms function poly(a) { ... this.copy = poly_copy; this.add = poly_add; this.subtract = poly_subtract; this.multiply = poly_multiply; this.value = poly_value; this.…

JScript高速化(5)

前回は、 単純なオブジェクトの生成と polyオブジェクトの生成との間に大きな差があることが分かった。 この差はなんなのかつきつめていこう。 そのために、単純なオブジェクトから少しずつプロパティを追加していく。 // 1597ms function poly() { this.a =…