做到物流分拣项目,处理格口数据报警状态问题,使用了并行Parallel.ForEach。后面做了下几个循环的效率,也记录了一下;
循环体内不做任何事情 时,发现Parallel.ForEach更耗时。Parallel.ForEach不是并行的吗,怎么会更耗时呢?颠覆了认知。。。。别急:这是因为循环体内执行的任务开销太小啦,Parallel并行管理的附加开销加上去反而时间更多。
如果循环体内执行相对耗时的任务,比如我现在在循环体内 Thread.Sleep(1);我们看一下效果
这下认知回来了; 效果非常显著。
所以选择哪一种循环,需要考虑 循环体任务的轻重 以及 循环量的大小。