c# 并行计算(大量循环处理的场景下)

文章介绍了并行处理的概念,通过一个C#代码示例展示了如何使用`Parallel.ForEach`方法进行并行处理,从而加速10亿数据的随机数生成。结果显示,相比于单线程,使用并行处理可以显著减少执行时间,证明了并行计算在利用硬件资源和提高效率方面的优势。需要注意的是,`Parallel.ForEach`方法是阻塞的,无需额外判断是否完成。
摘要由CSDN通过智能技术生成

介绍

并行指有多个CPU资源同时处理多个线程,不存在竞争的概念,可以大量节省运行时间。

用法参考

微软官方用法

编码

using System;
using System.Collections.Generic;

namespace ParallelTest
{
    public class TestObj
    {
        public List<double> RandomList = new List<double>();

        public void InitValue()
        {
            Random random = new Random((int)DateTime.Now.ToOADate());
            for (int i = 0; i < 10e6; i++)//1亿数值
            {
                RandomList.Add(random.NextDouble());
            }
            return;
        }

        public double Sum()
        {
            double refVel = 0;
            foreach (var item in RandomList)
            {
                refVel += item;
            }
            return refVel;
        }
    }
}

using ParallelTest;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {

        static void Main(string[] args)
        {
            List<TestObj> testObjs = new List<TestObj>();
            for (int i = 0; i < 100; i++)
            {
                testObjs.Add(new TestObj());
            }
            //foreach (var item in testObjs)
            //{
            //    item.InitValue();
            //}

            ParallelLoopResult result = Parallel.ForEach(testObjs, item =>
           {
               item.InitValue();
           });
            while (!result.IsCompleted)
            {
                Thread.Sleep(0);
            }
        }
    }


}


简单测试

单线程10亿数据随机数生成19.65s在这里插入图片描述

在这里插入图片描述

并行10亿随机数时间7.637s

在这里插入图片描述
在这里插入图片描述

结论

并行硬件资源利用更重复,省时省力,能用并行用并行

勘误

Parallel中方法为阻塞方法,无需通过ParallelLoopResult->IsCompleted()判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值