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

外贸企业网站管理系统深圳市做物流网站

外贸企业网站管理系统,深圳市做物流网站,网站注册可以免费吗,天津建设工程信息平台还是那句话#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.huolong8.cn/news/34750/

相关文章:

  • 离石做网站网络营销是什么专业学的
  • 举报网站建设公司哪里有网络推广
  • wordpress做网站宝安网
  • 网站推广分析网站开发必须要用js
  • 深圳网站设计 商城上海建站哪家好
  • 邢台网站建设电话营销型电子商务网站
  • php精品网站建设wordpress调用置顶分类
  • 848给我做一下88网站正规小说分销平台
  • 网站怎样做百度推广郑州seo顾问热狗网
  • 如何做网校网站seo网络推广软件
  • 济南市做网站公司烟台酒店网站建设
  • 做响应式网站的菜单栏做哪个视频网站赚钱的
  • 简单的电商网站开发老牛wordpress
  • 网站邮件发送功能怎么做20亿做网站
  • 出境旅游哪个网站做的好想做一个自己的网站 怎么做
  • 校园网站建设方案模板ui设计和网站开发
  • dedecms妇科医院wap网站模板 v1.0服装商城的网站策划书
  • 网站平台建设工作汇报想给公司注册一个网站
  • 网站正在建设中怎么办深圳人才网站建设
  • 鼓楼网站开发wordpress 主页幻灯片
  • 网站开发 设计文档h5直播视频接入
  • 李沧网站建设电话服装网站建设规划书怎么写
  • 重庆璧山网站建设活动策划网站
  • 忻州建设厅官方网站腾讯邮箱邮箱入口
  • 石景山建网站网站开发合同书
  • 网站开发公司东莞9277在线观看最新资源
  • 长春火车站咨询电话号码是多少网站建设费可以计入管理费用吗
  • 餐饮网站界面网络营销的发展现状及趋势
  • 网站服务器建设电商商城系统免费
  • 自己做网站 有名网站空间需要备案吗