民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS 大富豪プログラミングに失敗(2)

<<   作成日時 : 2009/06/10 09:35   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

昨日の記事の続き。

WSH 上の JScript でがしがし組んだプログラムの動作が異様に遅かった件で、ようやく原因が分かってきた。
JScript のバージョンによって差異があるのかも知れないが、JScript では文字列操作が異様に遅いという、誰からともなく聞いていた豆知識を忘れていたのがいけなかった。

var data = [
  [;"安藤",60],
  [;"井上",65],
  [;"宇野",60]
...
  [;"渡辺",50]];

for (var row in data) {
/* ここでいろいろ加工 */
  str = str + data[row].join("\t") + "\n";
}

というようなコードを書いてしまっていた。
これで、data の行数が何万となると、つど文字列を生成するコストが異様にでかくなって、動作が遅くなってしまうわけだ。

このループの部分を
var lines = new Array();
for (var row in data) {
/* ここでいろいろ加工 */
  lines.push(data[row].join("\t"));
}
var str = lines.join("\n");
とすることで
動作時間が10分の1くらいに短縮された。

オブジェクト指向に慣れた人ならもっと効率のいいコードが書けるのだろうなと思いつつも、ここではとにかく、JScript の文字列処理は遅いということをメモしておきたかったので、あえて晒すことにした。

IE のバージョンアップをすることで、あっさり解決してしまう問題だったのかも知れないが。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
大富豪プログラミングに失敗(2) 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる