Parallel.ForEach与foreach相比的优势怎么体现[通俗易懂]

Parallel.ForEach与foreach相比的优势怎么体现[通俗易懂]为什么80%的码农都做不了架构师?>>>…

大家好,又见面了,我是你们的朋友全栈君。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    public class People
    {
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        private Byte sex;

        public Byte Sex
        {
            get { return sex; }
            set { sex = value; }
        }
        private string school;

        public string School
        {
            get { return school; }
            set { school = value; }
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            List<People> pd = new List<People>();
            for(int i = 0; i < 72000; i++)
            {
                People people = new People();
                people.Id = i;
                people.Sex = 1;
                if(i<36000){
                    people.Age = 23;
                    people.Name= "MJ" + i;
                    people.School="NC";
                }else
                {
                    people.Name= "KD" + i;
                    people.Age = 24;
                    people.School="UCLA";
                }
                pd.Add(people);
            }

            System.DateTime currentTime0 = System.DateTime.Now;
            foreach (People p in pd)
            {
                p.Id += 1;
                p.Name = "aaa";
                p.Age = 40;
                p.Sex = 1;
                Console.WriteLine(p.Id + ", " + p.Name + ", " + p.School);
            }
            System.DateTime currentTime1 = System.DateTime.Now;
            Parallel.ForEach(pd, p =>
            {
                p.Id += 1;
                p.Name = "bbb";
                p.Age = 35;
                p.Sex =0;
                Console.WriteLine(p.Id + ", " + p.Name + ", " + p.School);
            });
            System.DateTime currentTime2 = System.DateTime.Now;

            Console.WriteLine(currentTime0.ToString() + " " + currentTime0.Millisecond.ToString());
            Console.WriteLine(currentTime1.ToString() + " " + currentTime1.Millisecond.ToString());
            Console.WriteLine(currentTime2.ToString() + " " + currentTime2.Millisecond.ToString());
            Console.ReadKey();
        }
    }
}

输出过程中,明显看到第二个循环比第一个快了很多很多,但是看最后的时间差却失望了:

2014/08/29 15:37:50 401

2014/08/29 15:37:59 246

2014/08/29 15:38:08 185

 

 

转载于:https://my.oschina.net/mj23/blog/308043

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161809.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真

    ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真1.滤波器参数计算RF中频信号的频率范围为70MHz±2MHz,采样频率为40.625MHz。采样后信号的频谱是原信号频谱以40.625MHz为周期的频谱搬移,根据奈奎斯特采样定理,40.625MHz采样率的奈奎斯特采样区为[N*20.3125,(N+1)*20.3125]MHz(N为自然数)。频谱搬移在第一奈奎斯特采样区为11.25MHz±2MHz(负频率向右的两次频移)。所以滤波器的通带需要设计为9.25MHz~13.25MHz通过的带通滤波器。2.通过matlab的fdatool工具进行滤波器

    2022年5月30日
    46
  • vb中如何连接mysql_vb怎么连接数据库「建议收藏」

    vb怎么连接数据库[编辑]概述我们对数据库进行操作时,一方面要使用户可以在程序界面上对需要的数据进行访问;另一方面可以对数据库中的数据进行各种操作,最终的操作结果还要反馈给用户。一、Data控件1.设置数据控件的属性2.将Data控件连到一个特定的数据库和其中的一个表上3.在VB中建立一个标准的工程4.在窗体中添加控件(Data1就是一个Data控件)5.改变控件的一些属性6.对Data控件进行设…

    2022年4月16日
    59
  • Fleet究竟是什么?为什么最近这么火~

    Fleet究竟是什么?为什么最近这么火~如何看待JetBrains推出的轻量级编辑器Fleet?

    2022年6月1日
    60
  • mac怎么上传文件到服务器_xshell上传本地文件到服务器

    mac怎么上传文件到服务器_xshell上传本地文件到服务器前言我们使用mac时,想让本地文件上传至服务器,该怎么办呢windows系统,我们可以使用xftp或者rz命令,那么mac呢?mac系统,我们可以使用sftp、scp或者rz命令,本文介绍sft

    2022年7月29日
    6
  • jvm优化(二)JVM 内存大小设置

    jvm优化(二)JVM 内存大小设置Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对JavaJVM有关内存方面的知识进行详细介绍。一、JavaJVM内存介绍JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟

    2022年6月5日
    90
  • java web mvc思想介绍

    java web mvc思想介绍

    2022年2月1日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号