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创建线程会耗时,如果循环里面的内容太简单的话法尔得不偿失
相关文章
- [系统安13全]反汇编-循环语句do-while、while、for
- 教程-for do、while do 中循环退出
- 【shell】while read line 与for循环的区别
- Destoon7.0百度批量循环推送至百度
- java使用循环案例——CSDN博客
- com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML
- 【JAVA】增强for循环for(int a : arr)
- 批处理循环十秒倒计时
- smarty section 循环不同的四个样式
- Linux Shell脚本自动化编程实战-for循环
- 信息摘要算法-CRC(循环冗余校验)
- 【Python 23】52周存钱挑战3.0(循环计数for与range)
- JavaScript 模块的循环加载
- Python编程语言学习:在for循环中如何同时使用2个变量或者3个变量
- Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)
- 【蓝桥杯Java_C组·从零开始卷】第三节、while循环&do while循环for循环(超重点)&break终止循环&continue结束本次循环
- RobotFrameWork - 11 - Selenium API - if分支语句与for循环
- python for循环习题
- swift-for循环遍历,遍历字典,循环生成数组
- 内核通用链表-双向循环链表
- VB编程:for循环输出杨辉三角-45
- C语言 第六章 多重循环
- LCC编译器的源程序分析(32)for循环语句
- shell for循环及分号、括号使用
- 【Java 基础】for 循环、嵌套循环详解(附案例)
- HLS开发学习-11- for 循环优化(一)
- pytorch学习笔记(十一):循环神经网络RNN(简介)
- FPGA 20个例程篇:10.遍历DDR3内存颗粒读写循环校验