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

アクセスカウンタ

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

<<   作成日時 : 2009/06/08 23:27   >>

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

昨日、WSH でクリップボードを操作する方法についての記事を書いた。
で、調子に乗って大富豪プログラミングに挑んだ。

50MByte ほどの CSV ファイルを JScript で読み込んで、ごにょごにょと加工して、出来上がった表データを Excel に貼り付けようというものだ。

実は、同じ作業をするプログラムが昨日中に完成していた。
CSV を1行ずつ読み込み、加工しながら Excel にペーストしていくという手法だった。
JScript にも関わらず、ロジックは COBOL のようなプログラムになってしまっていた。
○○をキーにしてブレーク処理みたいな。

これでは格好悪い。JScript を使うのだから、いかにも OOP らしくやろうと思い立った。
まず一気に CSV を読み込み、ちょっとだけ手抜きして eval で JScript のオブジェクトに変換。iterator を使ってデータを加工。続いてそれを TAB と改行記号で連結した文字列に変換し、クリップボードに保存。最後にExcel にペーストという段取り。

この段取り自体に大きな間違いはない。実際、プログラムは意図したとおりに動作したのだし。
メモリーの使用量は 500MByte ほど。OS や他のプログラムの使用分を差し引けば、200MByte くらい使ってしまっただろうか?
でも、最近の PC は当たり前に 1GByte くらいのメモリーを載せているのでこれくらいは許容範囲だろう。

で、何が失敗だったかというと、それは実行時間。
数万行のファイルなのだが、処理に1時間くらいかかってしまうのだ。iterator 関連の処理がその大部分を占めている。
しかも、CPU 使用率が100%近くに張り付いてしまうので、他の処理にも影響が出ている。

CSV を1行ずつ読み込んでの処理だと同じことが数分でできたのに。

適当に大富豪プログラミングやってしまったので、無駄なオブジェクトの生成処理などが大量に入ってしまったのかも知れない。
どこを改造すればいいのか、これから考える。

明日以降、うまくいけば、サンプルコードを提示しながら、何らかの説明ができるかも知れない。
...あまりに業務に密接に絡んだコードなので、まったく提示できないかも知れないが。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

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