我有一组数据全部翻倍:100 行 20 列
我将数据拉到一个 IEnumerable 列表中:
var RowsOfData = File.ReadLines(dll.Globals.OutputDir + dll.Globals.filename).Select(a => a.Split(',').ToList());
var FilteredRowsToday = (from n in RowsOfData
where n[1] == 1
orderby n[0] descending
select n);
然后我有一组函数,它们对每个数据行进行简单的检查,每个都返回一个 Bool。我想要的是计算每个函数评估为真的行数。然后,当我扩大项目规模时,如果可能的话,我希望尽快并行处理,我尝试过:
foreach (var row in FilteredRowsToday) {
is f1() true, is f2() true
etc
}
我尝试并行执行似乎很慢
foreach (var row in FilteredRowsToday.AsParallel())
没有更快
我现在在想这样的事情:
var TotalTrue = FilteredRowsToday.Select(item => f1() & f2() & f3()).Count();
如果这是一个更好的陈述点,我可以预处理数据以将每个函数的评估结果作为一种二进制网格提供?
F1, f2, f3 etc
1, 0, 0 row 1
1, 1, 1 row 2 etc
欢迎提出建议!