我需要执行一些数据库操作,我尝试使用PLINQ:
someCollection.AsParallel()
.WithCancellation(token)
.ForAll(element => ExecuteDbOperation(element))
我注意到它相比之下速度很慢:
var tasks = someCollection.Select(element =>
Task.Run(() => ExecuteDbOperation(element), token))
.ToList()
await Task.WhenAll(tasks)
我更喜欢使用PLINQ语法,但出于性能考虑我被迫使用第二个版本。
有人能解释一下这两个版本在性能上的巨大差异吗?
someCollection
包含多少个元素?ExecuteDbOperation
操作的平均时间是多少? - DisappointedExecuteDbOperation
设为async
是一个可选项吗? - svick