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的时间。所以不适合少量的数据。更加适合大量数据的计算