小编use*_*234的帖子

c#Parallel vs Sequential

我有一个很大的列表循环(1.500.000项),每个项目我都要做一个非常小的检查.完全在30秒内.

使用Sequential时的CPU利用率约为10%,因此没有使用大量资源.

第一个想法是使用Parallel,但由于每个项目的持续时间有限,Parallel比持续的Foreach持续时间更长,这是因为" 为什么并行版本比本例中的顺序版本慢? ",这解释了每项任务的创建都会花费时间.

所以我有另一个想法,那就是将列表分成4个(或更多)相等的和平并创建一个线程来遍历项目以使其更快.

在创建自己的课程之前,这是一个好方法吗?或者关于如何加快速度的任何其他想法?或者你知道更好的处理方法吗?

我为另一个并行方法创建的代码:(在我自己的静态类中使用)

public static void ForEach<T>(IEnumerable<T> list, Action<T> body, int listDevide)
{
    // Number of items
    int items = list.Count();
    // Divided (in int, so floored)
    int listPart = items / listDevide;
    // Get numbers extra for last run
    int rest = items % listDevide;

    // List to save the actions
    var actions = new List<Action>();
    for(var x = 0; x < listDevide; x++)
    {
        // Create the actions
        actions.Add(delegate {
            foreach(var item …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing optimization sequential

8
推荐指数
1
解决办法
1352
查看次数