有关对耗时很大循环进行并行化优化的探讨之二:多重循环任务的并发处理

【引】

在上一篇有关并行化的《有关对耗时很大循环进行并行化优化的探讨 之一:并发搜索的处理》博文中,我们看到,不使用并行语言,而使用基本的编程语言配合多线程可以进行并行化处理,本文进一步将并行化操作进行一个简单封装,并开始完成一个并行化的数据操作,以供大家参考。

 

【多重循环的操作】

有很多方法可以实现并行查询,必须并行化Linq就是很不错的途径,相比linq to entity,真正实现了性能的有效提升,但如果考虑在循环中进行复杂的业务处理,进行独立的并行化编程会更有效的帮助我们实现系统的优化。

下面我们以一个简单的操作为例,看看如何自己做一个并行化的程序: 

  在如下的例程中,我们自定义了一个继承于datatable的TLoopTable对象,并向该表格添加500×5条Tdata记录,很不幸的是,每条tdata记录需要10毫秒才能生成。使用该TLoopTable对象填充到datagridview的时间是39秒左右,

我们就以此应用开始进行我们的并行化优化。
    class TLoopTable : DataTable
    {
        public const int CON = 500;


        public TLoopTable()
        {
            this.Columns.Add("C1");
            this.Columns.Add("D1");
            this.Columns.Add("E1");
            this.Columns.Add("F1");
            this.Columns.Add("G1");
        }

        public void AddRows()
        {
            List<LoopD> plist = new List<LoopD>();
            plist.Add(new LoopD("C", 1));
            plist.Add(new LoopD("D", 2));
            plist.Add(new LoopD("E", 3));
            plist.Add(new LoopD("F", 4));
            plist.Add(new LoopD("G", 5));

            for (int i = 0; i < CON; i++)
            {
                TData  [] tdl = new TData  [5];

                foreach (LoopD p in plist)
                {
                    tdl[p.Col -1] = new TData(p.Col, i, p.Str) ;
                }
                this.Rows.Add(tdl);
            }

     }

 

    class LoopD
    {
        public int Col;
        public string Str;
        public LoopD(string s, int c)
        {
            Col = c ;
            Str = s ;
        }
    }

      class TData
   

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值