分段用线程执行
private int x= 0; private static Object thisLock = new Object(); private System.Diagnostics.Stopwatch sw = null; private void handleData(List<HisAlarm> almList,int count) { while (x < count) { SaveAlarmCache(almList[x]); lock (thisLock) { x++; } Thread.Sleep(0); } sw.Stop(); TimeSpan ts2 = sw.Elapsed; Console.WriteLine("sw总共花费{0}ms.", ts2.TotalMilliseconds); } private void handleData2(List<HisAlarm> almList, int count,int index) { Console.WriteLine("index:{0}",index); int len0 = 0; int len1 = count / 5; int len2 = 2 * (count / 5); int len3 = 3 * (count / 5); int len4 = 4 * (count / 5); switch (index) { case 0: { System.Diagnostics.Stopwatch sw0 = new System.Diagnostics.Stopwatch(); sw0.Start(); while (len0 < len1) { SaveAlarmCache(almList[len0]); len0++; } sw0.Stop(); TimeSpan ts0 = sw0.Elapsed; Console.WriteLine("sw0总共花费{0}ms.{1}", ts0.TotalMilliseconds,DateTime.Now.ToString()); } break; case 1: { System.Diagnostics.Stopwatch sw1 = new System.Diagnostics.Stopwatch(); sw1.Start(); while (len1 < len2) { SaveAlarmCache(almList[len1]); len1++; } sw1.Stop(); TimeSpan ts1 = sw1.Elapsed; Console.WriteLine("sw1总共花费{0}ms.{1}", ts1.TotalMilliseconds, DateTime.Now.ToString()); } break; case 2: { System.Diagnostics.Stopwatch sw2 = new System.Diagnostics.Stopwatch(); sw2.Start(); while (len2 < len3) { SaveAlarmCache(almList[len2]); len2++; } sw2.Stop(); TimeSpan ts2 = sw2.Elapsed; Console.WriteLine("sw2总共花费{0}ms.{1}", ts2.TotalMilliseconds, DateTime.Now.ToString()); } break; case 3: { System.Diagnostics.Stopwatch sw3 = new System.Diagnostics.Stopwatch(); sw3.Start(); while (len3 < len4) { SaveAlarmCache(almList[len3]); len3++; } sw3.Stop(); TimeSpan ts3 = sw3.Elapsed; Console.WriteLine("sw3总共花费{0}ms.{1}", ts3.TotalMilliseconds, DateTime.Now.ToString()); } break; case 4: { System.Diagnostics.Stopwatch sw4 = new System.Diagnostics.Stopwatch(); sw4.Start(); while (len4 < count ) { SaveAlarmCache(almList[len4]); len4++; } sw4.Stop(); TimeSpan ts4 = sw4.Elapsed; Console.WriteLine("sw4总共花费{0}ms.{1}", ts4.TotalMilliseconds, DateTime.Now.ToString()); } break; default: break; } }
var sw = new System.Diagnostics.Stopwatch(); sw.Start(); foreach (HisAlarm alm in almList) { SaveAlarmCache(alm); //LogHelper.GetLog("Server").Debug("Add Alarm:" + alm); } TimeSpan ts2 = sw.Elapsed; Console.WriteLine("sw总共花费{0}ms.", ts2.TotalMilliseconds); //int len = almList.Count; //ParallelLoopResult result = Parallel.For(0, len, i =>{ SaveAlarmCache(almList[i]);}); //Parallel.ForEach(almList, new ParallelOptions { MaxDegreeOfParallelism = 100 }, (alm) => { SaveAlarmCache(alm); }); for (int cnt = 0; cnt < 5; cnt++) { int index = cnt; Thread th = new Thread(() => { handleData2(almList, almList.Count, index); }); th.Start(); } //ParallelLoopResult result = Parallel.ForEach<HisAlarm>(almList, (alm) => //{ // SaveAlarmCache(alm); // Thread.Sleep(1); ; //}); //LogHelper.GetLog("Server").Debug("ParallelLoopResult:" + result.IsCompleted); //Console.WriteLine("ParallelLoopResult:{0}", result.IsCompleted); //th.Start(); //sw.Stop();
private int x= 0; private static Object thisLock = new Object(); private System.Diagnostics.Stopwatch sw = null; private void handleData(List<HisAlarm> almList,int count) { while (x < count) { SaveAlarmCache(almList[x]); lock (thisLock) { x++; } Thread.Sleep(0); } sw.Stop(); TimeSpan ts2 = sw.Elapsed; Console.WriteLine("sw总共花费{0}ms.", ts2.TotalMilliseconds); }
private void handleData2(List<HisAlarm> almList, int count,int index) { Console.WriteLine("index:{0}",index); int len0 = 0; int len1 = count / 5; int len2 = 2 * (count / 5); int len3 = 3 * (count / 5); int len4 = 4 * (count / 5); switch (index) { case 0: { System.Diagnostics.Stopwatch sw0 = new System.Diagnostics.Stopwatch(); sw0.Start(); while (len0 < len1) { SaveAlarmCache(almList[len0]); len0++; } sw0.Stop(); TimeSpan ts0 = sw0.Elapsed; Console.WriteLine("sw0总共花费{0}ms.{1}", ts0.TotalMilliseconds,DateTime.Now.ToString()); } break; case 1: { System.Diagnostics.Stopwatch sw1 = new System.Diagnostics.Stopwatch(); sw1.Start(); while (len1 < len2) { SaveAlarmCache(almList[len1]); len1++; } sw1.Stop(); TimeSpan ts1 = sw1.Elapsed; Console.WriteLine("sw1总共花费{0}ms.{1}", ts1.TotalMilliseconds, DateTime.Now.ToString()); } break; case 2: { System.Diagnostics.Stopwatch sw2 = new System.Diagnostics.Stopwatch(); sw2.Start(); while (len2 < len3) { SaveAlarmCache(almList[len2]); len2++; } sw2.Stop(); TimeSpan ts2 = sw2.Elapsed; Console.WriteLine("sw2总共花费{0}ms.{1}", ts2.TotalMilliseconds, DateTime.Now.ToString()); } break; case 3: { System.Diagnostics.Stopwatch sw3 = new System.Diagnostics.Stopwatch(); sw3.Start(); while (len3 < len4) { SaveAlarmCache(almList[len3]); len3++; } sw3.Stop(); TimeSpan ts3 = sw3.Elapsed; Console.WriteLine("sw3总共花费{0}ms.{1}", ts3.TotalMilliseconds, DateTime.Now.ToString()); } break; case 4: { System.Diagnostics.Stopwatch sw4 = new System.Diagnostics.Stopwatch(); sw4.Start(); while (len4 < count ) { SaveAlarmCache(almList[len4]); len4++; } sw4.Stop(); TimeSpan ts4 = sw4.Elapsed; Console.WriteLine("sw4总共花费{0}ms.{1}", ts4.TotalMilliseconds, DateTime.Now.ToString()); } break; default: break; } }