当前位置: 首页 > 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://wiki.neutronadmin.com/news/357252/

相关文章:

  • 组建网站需多少钱在中企动力工作的感受
  • 庆阳网站制作凡科轻站
  • 做网站需要的课程潍坊网站建设方案
  • 外贸小家电网站推广二次开发创造作用
  • 上海网站开发设计北京网站建设itcask
  • 做淘客要有好的网站怎么自己给自己的网站做推广
  • 成都网站开发等项目外包公司深圳有多少互联网公司
  • 网站开发教育自己做视频直播网站
  • 哪个淘宝客网站最好北京免费公司注册地址
  • 分子信标探针在线设计网站推广广告赚钱软件
  • 培训餐饮网站建设做自己的网站logo
  • 汕头网站制作公司价格app软件开发外包公司
  • 社保网站上怎么做减员外链优化
  • 宁波专业网站seo公司结构优化设计
  • 湖北建设局网站首页女性适合开什么工作室
  • 网站后台登录地址修改个人asp网站模板下载
  • 收到网站建设账务处理l礼品文化网站建设
  • 传媒网站建设网科技企业网站如何建设
  • 视频制作报价表太原网站seo外包
  • 连锁销售网站制作企业查询官网入口查询免费
  • 找国外客户的网站极客优选网上商城系统
  • 专门做前端项目的一些网站万网云主机 wordpress
  • 建立网站的价格滨州做网站的公司
  • 外包公司做网站怎么样湖南建设集团网站
  • 做门户网站 cms江苏省建设银行网站
  • 程序员 创业做网站金汇网站建设
  • 做招聘网站网页设计师初学者工资
  • 制作网页网站小说教程青岛注册公司代理
  • 湛江在线制作网站杭州排名推广
  • 无锡企业自助建站系统用visual做网站