何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

ネタもと:テキストファイルの高速な読み込み(C# と VB.NET の質問掲示板)。あわせて読みたい:速度向上を行うための基本(DHJJ [Hatsune's Journal Japan] blog)。

その中で、ログファイルを読み込む処理を行っているのですが、1つのログファイルで1GB近くになる物もあり、読み込みに時間がかかっています。

現在よりも効率的にファイルの読み込みができれればと思うのですが、何かアドバイスありましたらお願いいたします。


///ファイルを開いて解析
using (StreamReader sr = new StreamReader(fileName, Encoding.GetEncoding("Shift_JIS")))
{
    while ((line = sr.ReadLine()) != null)
    {
        //ログ解析実行
    }
}

この質問内容を、「ここに引用したコード(using ブロック)の処理に時間がかかっている。この時間を短縮したい。」と解釈したら、ダメなんだろうか。

何となく、それは違うような気がした。で、「line = sr.ReadLine() に、時間がかかっている」と、解釈した。

ん。。。



1行って、500バイトくらいじゃないの?500バイトを読み込むのに、そんなに時間がかかるの?

「ログ解析実行」は、考えないで、ということだけど、ここをすべてコメントアウトした時間は計ってあるのだろうか?その上で、読み込みに時間がかかっています、なんだろうか。単純にメッセージを表示するだけの処理とでも置き換えていただいて結構です。とあるけど、コンソール出力って、とっても遅いよ?

で、1行ずつ処理するつもりらしいけど、1行読み込むのと、1行処理するのと、どっちが遅いのだろう?これを計らないと、読み込みを速くする意味がないんじゃないの?

つうかさぁ。一番最初に読み込みに時間がかかっていますと書いておいて、「sr.ReadLine が遅いと、どうやって判断しましたか?」と尋ねたら遅いと判断したのではありませんって。そりゃ、ないだろ?!


まぁ、あれだね。エンコーダ指定しているから。Shift_JIS から Unicode に変換する処理が、「読み込み処理」に加算されてしまっている。Shift_JIS のまま処理するのが、一つの方法かもしれない。

投稿日時 : 2008年5月30日 22:28
コメント
No comments posted yet.
タイトル
名前
Url
コメント