当前位置: 首页 > news >正文

太原百度做网站多少钱深圳企业网站制作设计方案

太原百度做网站多少钱,深圳企业网站制作设计方案,手机做ppt的软件,wordpress纯代码回顶部还是那句话#xff1a;十年河东#xff0c;十年河西#xff0c;莫欺少年穷。 今天和大家探讨一个问题#xff1a;Parallel.For 和 For 谁的效率高呢#xff1f; 从CPU使用方面而言#xff0c;Parallel.For 属于多线程范畴#xff0c;可以开辟多个线程使用CPU内核#x…还是那句话十年河东十年河西莫欺少年穷。 今天和大家探讨一个问题Parallel.For 和 For 谁的效率高呢 从CPU使用方面而言Parallel.For 属于多线程范畴可以开辟多个线程使用CPU内核也就是说可以并行处理程序。For 循环是单线程的一个线程执行完所有循环。 因此你会认为多线程的效率肯定高于单线程。但这样认为是错误的 例如下面程序 static void Main(string[] args){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();}   额为什么For 循环要比Parallel.For 效率要高呢 这是因为循环体内执行的任务开销太小仅仅是输出一个空字符串而已。微软的文章已经指出任务的开销大小对并行任务的影响。如果任务很小那么由于并行管理的附加开销任务分配调度同步等成本可能并行执行并不是优化方案。这也是上述程序For效率高出的原因。 如果在循环体内执行向数据库插入操作那么Parallel.For 效率就会高出在此我们认为每向数据库插入一条记录花费1毫秒时间将程序修改如下 class Program{static void Main(string[] args){Stopwatch sw new Stopwatch();sw.Start();ParallelLoopResult result Parallel.For(0, 10, i {Console.Write();Thread.Sleep(1);});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 10; i){Console.Write();Thread.Sleep(1);}sw_Eq.Stop();TimeSpan tssw_Eq sw_Eq.Elapsed;Console.WriteLine(for总共花费{0}ms., tssw_Eq.TotalMilliseconds);Console.ReadKey();}} } 执行结果大大改变 相信到此大家应该明白了吧也就说For是同步Parallel.For 是异步执行。当然我们也可以使用Thread实现异步编程 代码如下 class Program{static void Main(string[] args){Console.WriteLine(主线程测试开始..);Thread th new Thread(ThMethod);th.Start();Thread.Sleep(1000);Console.WriteLine(主线程测试结束..);Console.ReadLine();}static void ThMethod(){Console.WriteLine(异步执行开始);for (int i 0; i 5; i){Console.WriteLine(异步执行 i.ToString() ..);Thread.Sleep(1000);}Console.WriteLine(异步执行完成);}} Parallel.ForEach 和 ForEach  与 Parallel.For 和 For 一样一个是异步执行开辟多个线程。一个是同步执行开辟一个线程。因此效率方面同上主要看执行的什么任务在此不作具体说明。 下面写了一些代码从下面的代码中我们可以看出Parallel.ForEach具体开辟了几个线程如下 class Program{static void Main(string[] args){int[] intList new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };ParallelLoopResult result Parallel.ForEach(intList, (s,pls,longs) {Console.WriteLine(longs s);pls.Stop();if (pls.IsStopped){Parallel.Invoke(Gs,Ks);//异步调用多个方法}});Console.ReadKey();}public static void Gs(){Console.WriteLine(异步方法1);}public static void Ks(){Console.WriteLine(异步方法2);}} 上述代码中调用了Stop()方法我们都知道如果是同步执行的调用Stop()后会立即停止执行那么程序只会输出索引值为0的结果。而在异步中不是这样的异步迭代是多线程且没有顺序的。其执行结果如下 多次执行的结果可能不同。 如上图所示第一个图开辟了三个线程执行顺序为 0 2 1第二个图开辟了两个线程执行顺序为1 0  下面的Invoke()方法是异步调用其他的方法在此不作解释可参考C# Invoke() 设置开启的线程的个数 Parallel.ForEach(NameArray,new ParallelOptions{MaxDegreeOfParallelism3},(item,pls,i){}); 陈卧龙的博客
http://www.yutouwan.com/news/357252/

相关文章:

  • 公司网站如何做百度收录建筑设计院分公司加盟
  • 潍坊行业网站有没有做吉祥物的网站
  • 浙江省网站建设公司排名it外包范围
  • 江苏省建设厅网站建造师强制注销开原网站建设
  • 云南建设投资控股集团有限公司网站做商城网站需要什么资质
  • 电子商务网站建设代码企业网站开发前后台模块设计
  • 怎样做网站维护建设银行网站可以查保单吗
  • wordpress网站主修改网站推广如何做
  • 医美三方网站怎么做免费wordpress域名能绑定吗
  • icp备案网站接入信息ip地址段怎么填wordpress 禁用 提示
  • 滁州网站开发中铁建设集团有限公司招投标平台
  • 织梦网站地图html怎么做二手交易网站建设内容策划
  • 站长之家ppt专业的基础微网站开发
  • 查看网站开发语言松江新城建设集团有限公司网站
  • 建设网站的企业多少钱规范 加强网站建设管理
  • 保险官方网站房产门户网站模板
  • 做网站公司排名电话lamp安装wordpress
  • 手机网站优化公司仿美团外卖小程序源码
  • 网站报错403做安全宣传的是什么网站
  • 江东网站制作适合大学生做的网站有哪些
  • 如何推广网站方法wordpress文章关键词描述
  • 网站开发九大优势深圳专门做兼职的网站
  • 株洲专业seo优化快速优化seo软件推广方法
  • 自动化毕设题目网站开发网站设计制作程序
  • 保定企业建站程序学做网站论坛第六节
  • 推进文明网站建设江西省建设工程协会网站查询
  • 江门建设局网站优化方案生物必修一
  • 常用的网站开发网站怎样制作吸引人
  • jsp网站制作史家小学网站建设
  • 安全的合肥网站建设昆明抖音代运营公司