Parallel.For循環(huán)與普通for循環(huán)的性能比較
更新時(shí)間:2022年04月18日 14:10:46 作者:農(nóng)碼一生
這篇文章介紹了Parallel.For循環(huán)與普通for循環(huán)的性能比較,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
一、Parallel.For循環(huán)優(yōu)于For的情況
代碼:
#region Parallel.For
public static void ParallelForTest()
{
//標(biāo)準(zhǔn)For
var dt = DateTime.Now;
var rand = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < 20; i++)
{
Thread.Sleep(rand.Next(100, 1000));
}
var standerTime = (DateTime.Now - dt).TotalMilliseconds;
Console.WriteLine("標(biāo)準(zhǔn)的for循環(huán),耗時(shí){0}毫秒", standerTime);
//並行For
dt = DateTime.Now;
Parallel.For(0, 20, i =>
{
Thread.Sleep(rand.Next(100, 1000));
});
var parallelTime = (DateTime.Now - dt).TotalMilliseconds;
Console.WriteLine("并行的for循環(huán),耗時(shí){0}毫秒", parallelTime);
Console.WriteLine();
if (standerTime <= parallelTime)
{
Console.WriteLine("----------標(biāo)準(zhǔn)的for循環(huán)節(jié)省{0}毫秒----------", (parallelTime - standerTime));
}
else
{
Console.WriteLine("----------并行的for循環(huán)節(jié)省{0}毫秒----------", (standerTime - parallelTime));
}
Console.ReadKey();
}
#endregion運(yùn)行結(jié)果:

二、For循環(huán)優(yōu)于Parallel.For的情況
代碼:
#region For
public static void ForTest()
{
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine("Parallel.For");
ParallelLoopResult result =
Parallel.For(0, 10000, i =>
{
//打印空
Console.Write("");
});
sw.Stop();
TimeSpan ts2 = sw.Elapsed;
Console.WriteLine("Parallel.For總共花費(fèi){0}ms.", ts2.TotalMilliseconds);
//簡(jiǎn)單的For循環(huán)
Stopwatch sw_Eq = new Stopwatch();
sw_Eq.Start();
Console.WriteLine("For");
for (int i = 0; i < 10000; i++)
{
//打印空
Console.Write("");
}
sw_Eq.Stop();
TimeSpan tssw_Eq = sw_Eq.Elapsed;
Console.WriteLine("for總共花費(fèi){0}ms.", tssw_Eq.TotalMilliseconds);
Console.ReadKey();
}
#endregion運(yùn)行結(jié)果:

到此這篇關(guān)于Parallel.For循環(huán)與普通for循環(huán)比較的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中AutoResetEvent控制線程用法小結(jié)
本文主要來自一道面試題,由于之前對(duì)AutoResetEvent的概念比較模糊,面試題題目很簡(jiǎn)潔:兩個(gè)線程交替打印0~100的奇偶數(shù),你可以先動(dòng)手試試,我主要是嘗試在一個(gè)方法里面完成這個(gè)任務(wù),需要的朋友可以參考下2022-07-07
c# 使用WebRequest實(shí)現(xiàn)多文件上傳
這篇文章主要介紹了c# 使用WebRequest實(shí)現(xiàn)多文件上傳的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03
基于C#的socket編程的TCP異步的實(shí)現(xiàn)代碼
本篇文章主要介紹了基于C#的socket編程的TCP異步的實(shí)現(xiàn)代碼,詳解的講訴了TCP通信異步的實(shí)現(xiàn),有興趣的可以了解一下。2016-11-11

