toList()を呼び出すと、パフォーマンスに影響がありますか?
はい、もちろん。理論的i++
にはパフォーマンスに影響を与えることさえありますが、それはおそらく数ティックの間プログラムを遅くします。
何をし.ToList
ますか?
を呼び出す.ToList
と、コードはEnumerable.ToList()
拡張メソッドであるを呼び出しますreturn new List<TSource>(source)
。対応するコンストラクターでは、最悪の状況下で、アイテムコンテナーを通過し、それらを1つずつ新しいコンテナーに追加します。したがって、その動作はパフォーマンスにほとんど影響しません。アプリケーションのパフォーマンスのボトルネックになることは不可能です。
問題のコードの何が問題になっていますか
Directory.GetFiles
フォルダを調べてすべてのファイルの名前をすぐにメモリに戻すと、string []が大量のメモリを消費し、すべての速度が低下する可能性があります。
その時何をすべきか
場合によります。あなた(およびあなたのビジネスロジック)がフォルダ内のファイル量が常に小さいことを保証する場合、コードは受け入れられます。Directory.EnumerateFiles
ただし、C#4ではレイジーバージョンを使用することをお勧めします。これは、すぐには実行されないクエリによく似ています。次のようにクエリを追加できます。
Directory.EnumerateFiles(myPath).Any(s => s.Contains("myfile"))
これは、名前に「myfile」が含まれるファイルが見つかるとすぐにパスの検索を停止します。これは明らかにパフォーマンスが優れています.GetFiles
。