2008年11月06日
川俣晶の縁側ソフトウェア技術雑記total 3836 count

System.IO名前空間のメソッドでファイル一覧を得るときに列挙インターフェースが欲しい理由

Written By: 川俣 晶連絡先

 kkamegawaさんの.NET Framework 4.0のBCLより。

File System Enumerationは配列ベースの従来のSystem.IO.FileとかSystem.IO.DirectoryにIEnumerable<T>をつけてみようかって話。LINQと併用するとき便利なこともあるしねってことだそうで。

 これは重要です。その理由はファイルが1万個ぐらいあるフォルダに対して、GetFilesメソッドを使ってみると分かるのではないかな? 呼ぶとプログラムの実行がかなり長時間止まってしまいます。Win32 APIなら、「最初の1つくれ」「次くれ」「次くれ」……という流れなので、制御はすぐ戻ってきますが、GetFilesメソッドは全部揃うまで戻ってきません。

 この特徴はLINQとの相性が最悪です。たとえば、Anyメソッドのように全てのデータをチェックせずとも結果が確定するクエリは、確定した時点で動作を打ち切るわけですが、GetFilesメソッドは調べる必要のないファイル名までリストを作ってしまいます。

 ……ということが実は気になっていたので、列挙インターフェースが付くのは納得です。

 (デフォでRDBにデータを投げ込んで、生ファイルをあまり使わない人には分かりにくい話かもしれません)

Facebook

トラックバック一覧

2008年11月07日[.NET].NET Framework 4.0 BCLの続きFrom: 新日々此何有哉

id:kkamegawa:20081106:p1の続き id:NyaRuRu wrote: &#62;プロセス内で異なるバージョンのCLRがロードできるようになるのはうれしいなぁ。 &#62;.NET Framework 1.1とか特に…(まだ使うことがあるのです) In Process Side-by-Side ですが,確か CLR 1.x 世代はサポート外っ 続きを読む

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2008年
11月
07日
System.IO.Directory.GetFiles メソッド の問題点とは何か
3days 0 count
total 13423 count
【技術雑記】の前のコンテンツ
2008年
11月
02日
表示と非表示を繰り返すコントロールに対するClickイベントは消失することがある
3days 0 count
total 3305 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20081106131016
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.