Parallel.For循环与普通for循环的性能比较

一、Parallel.For循环优于For的情况

代码:

        #region Parallel.For
        public static void ParallelForTest()
        {
            //标准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);

            //並行For
            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();
        }

        #endregion

运行结果:

二、For循环优于Parallel.For的情况

代码:

        #region For
        public static void ForTest()
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
            Console.WriteLine("Parallel.For");
            ParallelLoopResult result =
            Parallel.For(0, 10000, i =>
            {
                //打印空
                Console.Write("");

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

            //簡單的For循環
            Stopwatch sw_Eq = new Stopwatch();
            sw_Eq.Start();
            Console.WriteLine("For");
            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();
        }
        #endregion

运行结果:

到此这篇关于Parallel.For循环与普通for循环比较的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c# 并行和多线程编程——认识Parallel

    随着多核时代的到来,并行开发越来越展示出它的强大威力!使用并行程序,充分的利用系统资源,提高程序的性能.在.net 4.0中,微软给我们提供了一个新的命名空间:System.Threading.Tasks.这里面有很多关于并行开发的东西,今天第一篇就介绍下最基础,最简单的--认识和使用Parallel. 一. Parallel的使用 在Parallel下面有三个常用的方法invoke,For和ForEach. 1.Parallel.Invoke 这是最简单,最简洁的将串行的代码并行化. 在这里先

  • c# Parallel类的使用

    Parallel类是对线程的抽象,提供数据与任务的并行性.类定义了静态方法For和ForEach,使用多个任务来完成多个作业.Parallel.For和Parallel.ForEach方法在每次迭代的时候调用相同的代码,而Parallel.Invoke()方法允许同时调用不同的方法.Parallel.ForEach()方法用于数据的并行性,Parallel.Invoke()方法用于任务的并行性. 1.For()方法 For()方法用于多次执行一个任务,可以并行运行迭代,但迭代的顺序并没指定.Fo

  • C#并发实战记录之Parallel.ForEach使用

    前言: 最近给客户开发一个伙食费计算系统,大概需要计算2000个人的伙食.需求是按照员工的预定报餐计划对消费记录进行检查,如有未报餐有刷卡或者有报餐没刷卡的要进行一定的金额扣减等一系列规则.一开始我的想法比较简单,直接用一个for循环搞定,统计结果倒是没问题,但是计算出来太慢了需要7,8分钟.这样系统服务是报超时错误的,让人觉得有点不太爽.由于时间也不多就就先提交给用户使用了,后面逻辑又增加了,计算时间变长,整个计算一遍居然要将近10分钟了.这个对用户来说是能接收的(原来自己手算需要好几天呢),

  • C#使用Parallel类进行多线程编程实例

    本文实例讲述了C#使用 Parallel 类进行多线程编程的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Diagnostics; using System.Runtime.InteropServic

  • C#中Parallel类For、ForEach和Invoke使用介绍

    一.简介: Parallel类提供了数据和任务的并行性:Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务.使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义.在For()方法中,前两个参数是固定的,这两个参数定义了循环的开头和结束.首先描述它的第一个方法For(int,int,Action<int>),前面两个参数代表循环的开头和介绍,第三个参数是个委托,整数参数是循环的迭代次数,该参数被传递给委托引用的方法.Paraller.For()

  • C#多线程之Parallel类的用法

    Parallel类是对线程的一个抽象.该类位于System.Threading.Tasks名称空间中,提供了数据和任务并行性. Paraller类定义了数据并行地For和ForEach的静态方法,以及任务并行的Invoke的静态方法.Parallel.For()和Parallel.ForEach()方法在每次迭代中调用相同的代码,Paraller.Invoke()允许调用不同的方法. 1.Parallel.For Parallel.For()方法类似C#语法的for循环语句,多次执行一个任务.但

  • Parallel.For循环与普通for循环的性能比较

    一.Parallel.For循环优于For的情况 代码: #region Parallel.For public static void ParallelForTest() { //标准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 standerT

  • 跟我学习javascript的for循环和for...in循环

    大家都知道在JavaScript中提供了两种方式迭代对象: for 循环: for..in循环: 一.for循环 不足: 在于每次循环的时候数组的长度都要去获取: 终止条件要明确: 在for循环中,你可以循环取得数组或是数组类似对象的值,譬如arguments和HTMLCollection对象.通常的循环形式如下: // 次佳的循环 for (var i = 0; i < myarray.length; i++) { // 使用myarray[i]做点什么 } 这种形式的循环的不足在于每次循环的

  • JavaScript中的for循环与双重for循环详解

    for循环 for循环就是对数组的元素进行循环. 语法: for (初始化变量; 条件表达式; 迭代语句) {      需要执行的代码块: } 初始化变量:一般用来对循环变量进行初始化赋值. 条件表达式:作为循环条件,一个包含比较运算符的表达式,用来限定循环变量的边限.如果循环变量的值超出了该边限,则停止该循环语句的执行. 迭代语句:用来改变循环变量的值,从而控制循环的次数,通常是对循环变量的值进行递增或者递减的操作. for循环执行顺序: // 1. 声明变量: // 2. 判断循环执行条件

  • Java循环队列与非循环队列的区别总结

    非循环循环队列 判满:(rear+1) % maxsize == front 判空:front == rear 队列元素个数:rear = (rear + maxsize - front) % maxsize front指针移动方式:front = (front + 1) % maxsize rear指针移动方式:rear= (rear+ 1) % maxsize import java.awt.Font; import java.util.Scanner; import javax.manag

  • Java循环结构之多重循环及continue break

    目录 前言 for循环案例 continue break return 前言 含义: (1)多重循环指一个循环语句的循环体中再包含循环语句,又称嵌套循环. (2)循环语句内可以嵌套多层循环. (3)不同的循环语句可以相互嵌套. 语法格式: while循环: while(循环条件1){ 循环语句1 while(循环条件2){ 循环语句2 } } do while循环: do{ 循环体 do{ 循环体 }while(循环条件); }while(循环条件); for循环: for(表达式1;表达式2;

  • java新特性之for循环最全的用法总结

    1. 增强for概述 增强for循环,也叫Foreach循环,用于数组和容器(集合类)的遍历.使用foreach循环遍历数组和集合元素时,无需获得数组和集合长度,无需根据索引来访问数组元素和集合元素,大大提高的效率,代码也简洁不少. 2. Oracle官网的解释 So when should you use the for-each loop? Any time you can. It really beautifies your code. Unfortunately, you cannot

  • Swift中的条件判断、循环、跳转语句基础学习笔记

    一.引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情.Swift中提供了许多强大的流程控制语句,例如快速遍历for-in,while循环,repeat-while循环,switch选择等,需要注意的是,在Swift2.2中,for(a;b;c)循环已经被弃用掉,并且Swift中的Switch语句也更加强大,可以处理任意数据类型. 二.for-in循环 配合范围运算符,for-in循环可以用来执行确定次数的循环,示例如下:

  • php for 循环语句使用方法详细说明

    for循环只是一个多一点的代码,同时循环添加到它.而所涉及的一个循环的共同任务是: 设置一些计数器变量的初始值. 请检查条件语句是正确的. 执行中的代码循环. 增量在每个迭代结束通过循环计数器. for循环允许你定义一个简单的代码行这些步骤.它似乎有一种奇怪的形式,所以一定要密切注意语法用! for 循环的语法是: for (expr1; expr2; expr3) statement 第一个表达式(expr1)在循环开始前无条件求值一次. expr2 在每次循环开始前求值.如果值为 TRUE,

  • python进阶教程之循环对象

    这一讲的主要目的是为了大家在读Python程序的时候对循环对象有一个基本概念. 循环对象的并不是随着Python的诞生就存在的,但它的发展迅速,特别是Python 3x的时代,循环对象正在成为循环的标准形式. 什么是循环对象 循环对象是这样一个对象,它包含有一个next()方法(__next__()方法,在python 3x中), 这个方法的目的是进行到下一个结果,而在结束一系列结果之后,举出StopIteration错误. 当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用n

  • 易语言基础教程之循环程序结构

    曾经听说过一句话:"计算机就擅长做的工作就是'循环'!".的确循环执行在语言中扮演着极为重要的角色,利用循环我们可以实现更复杂.重复性的工作.易语言对于循环程序结构提供四种形式,下面就一起来了解一下易语言中循环结构的具体使用方法. 方法/步骤 在此小编将以实例的方法与大家分享易语言中循环结构的具体使用方法:先创建一个Windows空白窗口,绘制如图所示的人机界面. 接下来为"计算"按钮添加"被单击"事件. 我们先利用"判断循环"

随机推荐