1

3.6ギガのcsvファイルがあります。私はCsvHelperを使ってそれを操作しています。linq を使用してクエリを実行すると、数分かかり、PC の CPU が最大で約 25% しか使用されないことがわかります。これを行うと、Linqはメモリをうまく処理しているようです。メモリはまったく上がらないからです。

したがって、 .AsParallel() を追加することで、パフォーマンスが向上するはずです。それを実行すると、CPU が約 95% まで上昇するのがわかりますが、それと同じくらい時間がかかります。

.AsParallel() でパフォーマンスが向上しないのはなぜですか。また、これを使用してパフォーマンスを向上させる方法はありますか (csv のままにしておきます)。

string path = @"C:\my_3_gig_file.csv";

using (var csv = new CsvHelper.CsvReader(new StreamReader(path, Encoding.Default)))
{
                csv.Configuration.Delimiter = ",";
                csv.Configuration.TrimFields = true;
                var records = csv.GetRecords<MyClass>();

                var q1 = (from a in records.AsParallel()
                          where a.MY_HOUR == "1"
                          && a.MY_DATE == "14-JUN-13"
                          select a).ToList();
}
4

2 に答える 2