DOBON.NETプログラミング掲示板過去ログ
.net独特のパフォーマンスが悪い処理について
題名: .net独特のパフォーマンスが悪い処理について
著者: たか@WEB屋
日時: 2012/02/03 15:46:40
ID: 29758
この記事の返信元:
(なし)
この記事への返信:
[29760]
Re[1]: .net独特のパフォーマンスが悪い処理について
もりお
2012/02/04 13:55:56
ツリーを表示
環境/言語:[C#]
分類:[.NET]
2012/02/03(Fri) 15:49:40 編集(投稿者)
C#でCSVファイルを読み込んでパースして画面表示に反映させたりする処理を書いています。
入門書にも出てきそうな以下のような普通の書き方で実行したのですが
1行あたり3列(各10バイト程度)で1000行程度の読み込みに10秒以上かかります。
StreamReader sr = new StreamReader("test.txt");
while ((String line = sr.ReadLine()) != null) {
//具体的な処理
}
ググってみるとC#はreadlineが遅いとのことで一度すべて読み込んでからの方が処理が速いとのことで↓みたいに書いてみたところほぼ待ち時間なしで(1秒以内ぐらいで)処理が終わりました
StreamReader sr = new StreamReader("test.txt");
String[] lines = sr.ReadToEnd().Split('\n');
for(int i=0;i<lines.Length;i++){
//具体的な処理
}
最終的にはCSVのパースクラスのTextFieldParserを使いましたがこちらも処理は一瞬でした。
自分の専門はWEBシステムなので サーバーのメモリを無駄遣いしないようにファイル読み込み時はreadlineで1行ずつ必要な分だけ読み込んで書くのが当たり前だと思っていたのですが .netの場合は違うみたいですね。
他にもCSVのデータをDataGridViewに表示するのも1件ずつ登録だと激遅なのに
一度中間のDataTableに変換してからDataSourceで指定すると一瞬だったり
.net特有の癖みたいなの結構ある気がしています。
問題発覚したときにググると 単発のブログ記事とかはひっかかるのですが まとめてるサイトとかあれば先に一通り目を通しておきたいな、と思いまして
この手の.net特有の癖みたいなのをまとめているサイトがありましたら教えてください。
何かご存じの物があればよろしくお願いいたします。
題名: Re[1]: .net独特のパフォーマンスが悪い処理について
著者: もりお
日時: 2012/02/04 13:55:56
ID: 29760
この記事の返信元:
[29758]
.net独特のパフォーマンスが悪い処理について
たか@WEB屋
2012/02/03 15:46:40
この記事への返信:
(なし)
ツリーを表示
直感的には列の分割が必要ない分TextFieldParserよりStreamReaderの方が
速そうに思えますが、そうはならないのですね。うーむ、どういう理屈で
そうなるのか知りたいです。誰かご存じの方はおられないでしょうか?(チラ
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
2012/02/03(Fri) 15:49:40 編集(投稿者)
C#でCSVファイルを読み込んでパースして画面表示に反映させたりする処理を書いています。
入門書にも出てきそうな以下のような普通の書き方で実行したのですが
1行あたり3列(各10バイト程度)で1000行程度の読み込みに10秒以上かかります。
StreamReader sr = new StreamReader("test.txt");
while ((String line = sr.ReadLine()) != null) {
//具体的な処理
}
ググってみるとC#はreadlineが遅いとのことで一度すべて読み込んでからの方が処理が速いとのことで↓みたいに書いてみたところほぼ待ち時間なしで(1秒以内ぐらいで)処理が終わりました
StreamReader sr = new StreamReader("test.txt");
String[] lines = sr.ReadToEnd().Split('\n');
for(int i=0;i<lines.Length;i++){
//具体的な処理
}
最終的にはCSVのパースクラスのTextFieldParserを使いましたがこちらも処理は一瞬でした。
自分の専門はWEBシステムなので サーバーのメモリを無駄遣いしないようにファイル読み込み時はreadlineで1行ずつ必要な分だけ読み込んで書くのが当たり前だと思っていたのですが .netの場合は違うみたいですね。
他にもCSVのデータをDataGridViewに表示するのも1件ずつ登録だと激遅なのに
一度中間のDataTableに変換してからDataSourceで指定すると一瞬だったり
.net特有の癖みたいなの結構ある気がしています。
問題発覚したときにググると 単発のブログ記事とかはひっかかるのですが まとめてるサイトとかあれば先に一通り目を通しておきたいな、と思いまして
この手の.net特有の癖みたいなのをまとめているサイトがありましたら教えてください。
何かご存じの物があればよろしくお願いいたします。