• Parallel并行运算实例


          并行运算Parallel,是.net 4.0版本里添加的新处理方式,主要充分利用CPU、任务并发的模式来达到提高运算能力。简单理解为每个CPU都在处理任务,而不会让它们空闲下来。

      直接看实例:

    namespace ConsoleParallel
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stopwatch watch1 = Stopwatch.StartNew();
                for (int i = 0; i < 4; i++)
                {
                    RunMethod(i);
                }
                Console.WriteLine("非并行耗时:" + watch1.ElapsedMilliseconds);
    
                Stopwatch watch2 = Stopwatch.StartNew();
                Parallel.For(0, 4, (i) =>
                {
                    RunMethod(i);
                });
                Console.WriteLine("并行耗时:" + watch2.ElapsedMilliseconds);
            }
    
            private static void RunMethod(int i)
            {
                switch (i)
                {
                    case 1:
                        Test1();
                        break;
                    case 2:
                        Test2();
                        break;
                    case 3:
                        Test3();
                        break;
                    case 4:
                        Test4();
                        break;
                }
            }
    
            private static void Test1()
            {
                System.Threading.Thread.Sleep(10000);
            }
    
            private static void Test2()
            {
                System.Threading.Thread.Sleep(20000);
            }
    
            private static void Test3()
            {
                System.Threading.Thread.Sleep(4000);
            }
    
            private static void Test4()
            {
                System.Threading.Thread.Sleep(6000);
            }
        }
    }
    

     运行效果如下:

    通过以上结果:我们发现,Parallel并发在性能和效率上提高了不少。

    Parallel.ForEach(lists, (obj) => {
                Response.Write(obj+"<br/>");
            });

    应用:将大数据加载在内存中时,借助多个方法并行去处理,每个方法执行部分数据加载,然后借助swich来区分,可以有效的提高速度。

  • 相关阅读:
    mysql的binlog日志格式
    Git的基本使用
    Tomcat安装部署
    [ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)]
    云盘的创建及使用
    ntp服务器配置
    如何更改mysql的密码策略?
    Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法
    Git的基本使用
    UES
  • 原文地址:https://www.cnblogs.com/kinger906/p/3490955.html
Copyright © 2020-2023  润新知