zoukankan      html  css  js  c++  java
  • Parallel.For循环与普通的for循环

    前两天看书发现了一个新的循环Parallel.For,这个循环在循环期间可以创建多个线程并行循环,就是说循环的内容是无序的。这让我想到了我前面的牛牛模拟计算是可以用到这个循环的,我前面的牛牛模拟计算是重复同样的操作10万次,可以是无序的,用Parallel.For会节省不少时间,如果是需要有序的循环不要使用Parallel.For。还有一点,如果循环里面的内容很简单,单一,建议还是使用普通的for循环会快一些。

    下面是Parallel.For与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("标准的for循环,耗时{0}毫秒", standerTime);
    dt = DateTime.Now;
    Parallel.For(0, 20, i =>
    {
    Thread.Sleep(rand.Next(100, 1000));
    });
    var parallelTime = (DateTime.Now - dt).TotalMilliseconds;
    Console.WriteLine("并行的for循环,耗时{0}毫秒", parallelTime);
    Console.WriteLine();
    if (standerTime <= parallelTime)
    {
    Console.WriteLine("----------标准的for循环节省{0}毫秒----------", (parallelTime - standerTime));
    }
    else
    {
    Console.WriteLine("----------并行的for循环节省{0}毫秒----------", (standerTime - parallelTime));
    }
    Console.ReadKey();
    上面是Parallel.For比较快的情况

    下面是for比较快的情况

    Stopwatch sw = new Stopwatch();
    sw.Start();

    ParallelLoopResult result =
    Parallel.For(0, 10000, i =>
    {
    Console.Write("");

    });
    sw.Stop();
    TimeSpan ts2 = sw.Elapsed;
    Console.WriteLine("Parallel.For总共花费{0}ms.", ts2.TotalMilliseconds);

    //
    Stopwatch sw_Eq = new Stopwatch();
    sw_Eq.Start();
    for (int i = 0; i < 10000; i++)
    {
    Console.Write("");
    }
    sw_Eq.Stop();
    TimeSpan tssw_Eq = sw_Eq.Elapsed;
    Console.WriteLine("for总共花费{0}ms.", tssw_Eq.TotalMilliseconds);
    Console.ReadKey();
    由此可见,Parallel.For创建线程会耗时,如果循环里面的内容太简单的话法尔得不偿失

  • 相关阅读:
    centos7grub2 引导win10
    必测的支付漏洞(一)——使用fiddler篡改支付金额
    使用Fiddler进行IOS APP的HTTP抓包
    Fiddler实现手机抓包——小白入门
    信息收集工具recon-ng详细使用教程
    Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
    Dear Project Manager, I Hate You
    敏捷中的沟通与故事点
    项目经理与敏捷开发
    C#中使用反射获取结构体实例
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/11941613.html
Copyright © 2011-2022 走看看