2016-04-15 21 views
0

我有10个不同的方法具有相同的返回类型“列表”。我将所有方法添加到任务。遍历任务列表并执行它们。我需要知道哪一个最适合提升性能。 Task.whenAny或Parallel.invoke?C#任务列表和使用task.when任何性能

欣赏您的回复。

+0

这完全取决于你的任务在做什么。通过并行运行它们可能没有任何性能提升,事实上有些情况可能会变得更糟(例如,如果两个任务都尝试同时访问同一物理磁盘的不同区域)。 –

+0

这可能取决于计算机中CPU的数量和计算机的内存量。如果内存和交换空间(在硬盘驱动器上)之间存在大量页面交换,性能可能会显着下降。因此,如果没有足够的内存来支持并行任务,那么增加并行进程的数量可以增加交换次数。通常,每个CPU都有自己的专用RAM,因此增加CPU会增加RAM,并且通常会减少交换。 – jdweng

回答

0

Task.WhenAll将等待它们全部并行完成。

Task.WhenAny会等到第一个完成。

Task.WhenAll可能是您想要的,并且对性能也有好处。