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();
}