我有一个 3.6 gig 的 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();
}