• 締切済み

ReadLineでスループット低下

こんにちは。 Excel VBAで、テキストファイルを1行読み込んで特定の処理を施す、ことを行末まで繰り返すアプリケーションを作りました。これを使って、20MB程度のテキストファイルは、正常に処理できているのですが、800MB程のファイルを扱うと、途中からスループットが大きく低下してしまいます。初めのうちは、400Line/秒くらいで処理されるのですが、徐々に低下して、中盤以降は120Line/秒くらいまで下がってしまいます。考えられる原因、または対処法をご存知でしょうか? ちなみに、処理対象のテキストファイルは、WWWサーバーのアクセスログで、LAN上の別マシンに置いてあります。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

一旦ローカルにコピーしてから読み込むとか。

chokchok
質問者

お礼

検討した結果、ログファイルのあるサーバー上でanalogを実行、そのレポートだけをローカルにコピーしてVBAツールのインプットにする、という仕様にしました。 ありがとうございました。

chokchok
質問者

補足

このアプリケーションでは、入力となるファイルを何個でも指定可能で、実際の運用では、1個約800MBのファイルを30個くらい扱う予定です。ローカルに全てコピーするだけで相当時間がかかるので、考えても仕方がない、と思っていたのですが、とりあえず1個コピーしてスループットを計測してみれば、何かヒントが見えるかも知れませんね。早速それを試して見ます。アドバイスありがとうございました。引き続きお願い致します。

関連するQ&A

  • テキスト処理の速度の速い言語

    最大80MBまで増加するテキストファイルがあります。 あるアプリケーションのログファイルです。 最大80MBまで達します。 80MBまで達したら新しいファイルが作成され、 そこにログが出力されます。 このログファイルの中身を読み取り、 ある処理をして、計算結果や、必要な箇所を別のテキストファイルに 出力するプログラムを作成しました。言語はVBScriptです。 このプログラムを10分に一度実行する必要があります。 そこで問題になってしまったのが、処理時間です。 前回の処理が終わらないまま10分が経過して 次の処理が開始されてしまうのです。 特にまずいのがデータ量の多い期末や年度末です。 そこでVBScriptよりも速くテキスト処理を行える言語を教えて下さい。 BATでもJScriptでもPerlでもCでもC++でもJavaでも何でも良いです。 教えて下さい。 よろしくお願いします。

  • ADSLのスピード

    ニューマシンに乗り換えた際に、OSを98からXPにグレードアップしたのですが、プロードバンド対応OSという謳い文句にも関わらず、ADSLのスループットが低下しました。回線および周辺機器は全く変化しておりません。尚、MTU、RWINの値は共に同値で、MTU=1500、RWIN=65536に設定しております。(但し、LANカードの違いあり) 【マシンスペック】 旧:CPU K6-2 300MHz メモリ:64MB OS:Win98 新:CPU AthlonXP1700 メモリ:512MB OS:WinXP 【測定結果】 旧:推定最大スループット1.35Mbps 新:推定最大スループット1.11Mbps ※測定は、http://www.speed.on.arena.ne.jp/ で行いました。微々たるもんですが…(^^;)。それにしても、収容局からの線路長が3.4kmにもなると、8Mの恩恵があまり感じられませんね。

  • テキストファイルの入力について教えてください。

    可変長レコードのテキストファイルを1レコードずつ読み込んで処理をしたいと思っています。 改行コードで区切られているので、line inputで読み込もうとしていますがうまくいきません。 テスト用に入力ファイルを小さくするとうまくいくのですが、目的のファイル(180MB)を読み込もうとするとフリーズしたような状態になってしまいます。 どうすればよいかお知恵を拝借できないでしょうか。 EXCEL2003 VBAです。 よろしくお願いいたします。

  • .txtではなく.logの方が良いのでしょうか?

    vbaでシステム開発をしていて、テキストファイルにログを書き出そうと思うのですが その際拡張子は.txtではなく.logの方が良いのでしょうか? txtとlogは、ファイル名で判断するためだけで中身の機能は同じですか?

  • Excel VBAが徐々に遅くなる

    エクセルのVBAであるテキストファイルを読み込み、計算してCSVで吐き出すというプログラムを組んでいます。 質問はその計算スピードが徐々に遅くなってしまうということです。 計算し始めは大体1テキストファイルを読み込んでCSVに吐き出すのに1分くらいで済むのですが、3,4時間回してると1テキストファイル⇒CSVに2,30分かかってしまいます。 シートが増えていたりグラフを追加したりはしていません。 また、VBAの変数もできるだけ初期化するようにしてます。 読み込んでいくテキストファイルのサイズもそんなに変わらないです。 何か考えられる原因はないでしょうか? ご教授宜しくお願いします。

  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • VBAの結果をテキストファイルへ。

    VBAについてのご質問があります。VBA(エクセル)で処理した結果をテキストファイルとして出力したいのですが、どのようにやるのでしょうか。申し訳ございませんが、ご教授ねがいます。

  • 書き込むファイルが開いているとき

    VBAを使って、テキストファイルに書き込みをしているのですが、 書き込みしたいファイルが開いているときは、 処理を中断したいのですが、 開いていることはどうやって判断できるのでしょうか?

  • DOS版sedでの行末処理について

    DOS版sedで行末文字を置換したいのですが、うまくいきません。 テキストの行末にある半角「L」を全角「」」に差し替えたく、以下のようにやってみましたが、置換が行われません。 sed -e "s/L\$/」/" 入力ファイル名 >出力ファイル名 sedはVectorからダウンロードした 「sed 1.18+mb1.03 フリーソフト マルチバイト文字対応版 GNU sed (96.06.10公開 59K) 」 を使用。 テキストはWindowsで生成したものです。 OSはWindowsXP SP3。 御教授よろしくお願いします。

  • MSアクセスのテーブルインポートについて

    お世話になります。 主題、MS ACCESS VBAを開発中ですが、取り込むファイルの拡張子について教えてください。 テキストファイルの取り込みなのですが、 *.txtというファイルは取り込み可能ですが、 *.log.txt というような形式になると取り込むことができません。 これは標準の仕様なのでしょうか? また *.log.txt のようなファイルの取り込み方を知っていたら 教えてください。

専門家に質問してみよう