Parallel这个类可以调度你的电脑中的所有CPU共同运算。我做了一个并行运算与普通运算的对比,并记录了时间

并行运算方法:

string str = "";
            DataTable dt=new DataTable();
            dt.Columns.Add("name", typeof(System.String));
            
            for (int i = 0; i <10000; i++)
            {
                DataRow drt = dt.NewRow();
                drt[0] = "hh"+i;
                dt.Rows.Add(drt);
            }
            DataRow[] rules = new DataRow[dt.Rows.Count];
            dt.Rows.CopyTo(rules, 0);
            // 第一个
            Stopwatch watch1 = new Stopwatch();
            watch1.Start();
            Parallel.ForEach<DataRow>(rules, (dr) =>
            {
                str += dr[0];
                str += dr[0];
            });
            watch1.Stop();
            txtWat1.Text = watch1.ElapsedMilliseconds.ToString();

普通运算的方法

// 第二个
            Stopwatch watch2 = new Stopwatch();
            watch2.Start();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];
                str += dr[0];
                str += dr[0];
            }
            watch2.Stop();
            txtWat2.Text = watch2.ElapsedMilliseconds.ToString();

最后的时间对比

可以知道用Parallel.ForEach<DataRow>这个方法算毕普通的要快很多。不过不能所有的循环都用这个方法,因为这个方法增加了调度CPU的时间。所以不适合少量的数据。更加适合大量数据的计算

posted on 2013-06-26 10:14  王洪洪  阅读(701)  评论(0编辑  收藏  举报