c# 并行运算

c# 并行运算

1. Parallel.INVOKE() 看实例:

    private static Stopwatch watch = new Stopwatch();

        private static void Run1()
        {
            Thread.Sleep(2000);
            Console.WriteLine("Task 1 takes 2 sec");
        }
        private static void Run2()
        {
            Thread.Sleep(3000);
            Console.WriteLine("Task 2 takes 3 sec");
        }

        static void Main(string[] args)
        {
            watch.Start();
            Parallel.Invoke(Run1,Run2);
            watch.Stop();
            Console.WriteLine("Parallel run "+watch.ElapsedMilliseconds +" ms");

            watch.Restart();
            Run1();
            Run2();
            watch.Stop();
            Console.WriteLine("Normal run "+watch.ElapsedMilliseconds+" ms");

            Console.ReadLine();

看结果:

 2.Parallel.For

 看实例:

  watch.Start();
            for (int i = 0; i < 10000; i++)
            {
                for (int j = 0; j < 5000; j++)
                {
                    int sum = 0;
                    sum++;
                }
            }
            watch.Stop();
            Console.WriteLine("Normal run " + watch.ElapsedMilliseconds + "ms");

            watch.Restart();
            watch.Start();
            Parallel.For(0, 1000, item =>
              {
                  for (int j = 0; j < 5000; j++)
                  {
                      int sum = 0;
                      sum += item;
                  }

              });

            watch.Stop();
            Console.WriteLine("ParalleFor run " + watch.ElapsedMilliseconds + "ms");

            Console.ReadLine();

看结果:

 

是不是Parallel.For在任何时候都比for要快呢?答案当然是“不是”,要不然微软还留着for干嘛?

看实例:

时间: 2024-10-04 17:02:50

c# 并行运算的相关文章

createprocess并行运算

#include "stdafx.h"#include "windows.h"#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { STARTUPINFO si; PROCESS_INFORMATION pi; TCHAR command[MAX_PATH]; sprintf_s(command,"windows_study.exe&quo

SQL Server调优系列基础篇(并行运算总结)

原文:SQL Server调优系列基础篇(并行运算总结) 前言 上三篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符.联合运算符的优化技巧. 本篇我们分析SQL Server的并行运算,作为多核计算机盛行的今天,SQL Server也会适时调整自己的查询计划,来适应硬件资源的扩展,充分利用硬件资源,最大限度的提高性能. 闲言少叙,直接进入本篇的正题. 技术准备 同前几篇一样,基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.并

SQL Server调优系列基础篇(并行运算总结篇二)

原文:SQL Server调优系列基础篇(并行运算总结篇二) 前言 上一篇文章我们介绍了查看查询计划的并行运行方式. 本篇我们接着分析SQL Server的并行运算. 闲言少叙,直接进入本篇的正题. 技术准备 同前几篇一样,基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 内容 文章开始前,我们先来回顾上一篇中介绍的并行运算,来看文章最后介绍的并行运算语句: SELECT B1.[KEY],B1.DATA,B2.DATA FROM BigTa

FunDA(15)- 示范:任务并行运算 - user task parallel execution

FunDA的并行运算施用就是对用户自定义函数的并行运算.原理上就是把一个输入流截分成多个输入流并行地输入到一个自定义函数的多个运行实例.这些函数运行实例同时在各自不同的线程里同步运算直至耗尽所有输入.并行运算的具体函数实例数是用fs2-nondeterminism的算法根据CPU内核数.线程池配置和用户指定的最大运算实例数来决定的.我们在这次示范里可以对比一下同样工作内容的并行运算和串形运算效率.在前面示范里我们获取了一个AQMRPT表.但这个表不够合理化(normalized):state和c

FunDA(16)- 示范:整合并行运算 - total parallelism solution

在对上两篇讨论中我们介绍了并行运算的两种体现方式:并行构建数据源及并行运算用户自定义函数.我们分别对这两部分进行了示范.本篇我准备示范把这两种情况集成一体的并行运算模式.这次介绍的数据源并行构建方式也与前面描述的有所不同:在前面讨论里我们预知需要从三个独立流来并行构建数据源.但如果我们有一个不知长度的数据流,它的每个元素代表不同的数据流,应该如何处理.我们知道在AQMRPT表里有从1999年到2xxx年的空气质量测量数据,我们可以试着并行把按年份生成的数据流构建成一个数据源.直接使用上期示范中的

Scalaz(59)- scalaz-stream: fs2-程序并行运算,fs2 running effects in parallel

scalaz-stream-fs2是一种函数式的数据流编程工具.fs2的类型款式是:Stream[F[_],O],F[_]代表一种运算模式,O代表Stream数据元素的类型.实际上F就是一种延迟运算机制:F中间包含的类型如F[A]的A是一个可能会产生副作用不纯代码(impure code)的运算结果类型,我们必须用F对A运算的延迟机制才能实现编程过程中的函数组合(compositionality),这是函数式编程的标准做法.如果为一个Stream装备了F[A],就代表这个Stream会在处理数据

处理海量数据的模式MapReduce,大规模数据集的并行运算

MapReduce是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算. "Map(映射)"."Reduce(化简)"的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴. 适合非结构化和结构化的海量数据的搜索.挖掘.分析与机器智能学习等. MapReduce计算模型 分布式计算的瓶颈是网络带宽."本地计算"是最有效的一种节约网络带宽的手段. MapReduce的特点 1.输入的键值是不固定的,由分析人员选择 2.对

泛函编程(18)-泛函库设计-并行运算组件库

作为专业的编程人员,我们经常会因为工作需要建立一些工具库.所谓工具库就是针对工作上经常会遇到的一些共性问题预先编制的由一整套函数所组成的函数库.通常这些工具库的功能都是在特别定制的一些数据类型支持下由一系列函数围绕着这些数据类型进行运算而实现的.在泛函编程范畴内也不例外.但在泛函工具库里的函数则更重视函数的组合能力(functional composition):因而泛函的工具库一般称为组件库(combinator library),库内函数则被称之为组件(combinator).组件库的设计者

SQL Server调优系列 - 并行运算总结(一)

前言 上三篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符.联合运算符的优化技巧. 本篇我们分析SQL Server的并行运算,作为多核计算机盛行的今天,SQL Server也会适时调整自己的查询计划,来适应硬件资源的扩展,充分利用硬件资源,最大限度的提高性能. 闲言少叙,直接进入本篇的正题. 技术准备 同前几篇一样,基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.并行运算符 在我们日常所写的T-SQL语句,并不是所有的最优