.NET并行编程--简介(一)

  最近在实施项目过程当中遇到了一些问题,因为工厂加工数据量稍微有点大,系统运行表现的很是慢,有些人说机器的配置不够,网络宽带不够等等因素致使系统运行缓慢,固然这的确也是一部分缘由。可是从我我的的角度来看,目前的系统生产的数据量虽然有点大,可是机器的性能并无彻底发挥出来。数据库

  如今系统的机器配置状况是两台服务器,一台是4核(2.4GHZ),8G内存 的戴尔服务器,另一台是双核(2.4GHZ),4G 内存 ,两台都是用作数据库服务器,由于是客户端软件因此没有IIS什么问题。就目前系统的访问量来看,这两台机器足以支撑这个系统的运行,可是为何仍是表现的慢,别人一开口就提要加CPU,要加内存,可是实际上系统根本就没有使用到这么高的内存和CPU。是什么缘由致使其运算速度慢?编程

  本文从程序的角度来记录一下最近的的性能调优。前不久看到了.NET中的并行编程,以前很早就马马虎虎的看过这个东西,可是并无详细去了解和参详,此次调优的过程使用到了一下并行编程的东西,这里简单记录整理成文,供后期学习使用。服务器

   (一) 并行编程网络

    对于什么是并行编程,这里简单理解:以往咱们写的程序都是命令顺序执行的,在同一个内核处理器上要等到一个处理完下一个继续处理,而并行编程就是多个任务能够分配到不一样的处理器上同时执行。如今的机器通常都配有双核以及以上的处理器,如何将命令任务分配到不一样的处理器上同时执行那就是并行编程的任务。架构

  

  (二) .NET中的并行编程并发

    其实在好久以前就有并行编程了,可是在.NET中要使用并行编程须要使用.NET4.0以及以上版本.并行程序设计是程序设计的一种形式,以这种形式编写的代码可以充分利用底层硬件所提供的并行执行能力,并行程序设计可以同时运行不少的指令,充分利用处理器的达到体能提高的效果。性能

 

  (三)硬件线程和软件线程学习

    物理内核是真正的独立处理单元,多个物理内核可使得多条指令同时运行。为了充分的发挥多物理内核的功效,咱们会使用多个进程,而每一个进程又能够建立多个线程。线程

    而一个物理内核又能够提供多个硬件线程,也就是逻辑内核.而使用超线程技术,能够在每一个物理内核上提供多份架构状态,好比2个物理内核,使用超线程技术每一个内核上提供2份架构状态,从而得到4个硬件线程。这也就是咱们常说的双核四线程,在计算机上显示4个处理,其实只有两个真正的物理内核。设计

 

  (四)基于任务的并行编程

    在作并行任务设计的时候,咱们须要提供要注意一下一些步骤:

    1. 将每一个任务分解为不一样的小问题,彻底不用去考虑其执行的顺序问题

    2. 每一个字问题又能够分为以下几种状况:

      (a)可以以并行的方式处理的数据--对数据分解可以实现并行

      (b)须要不少任务,并且可以以某种复杂的并行化并行处理的数据流

      (c)能够并行运行的任务

    3. 将程序设计为能够并行的的形式

    4.考虑不一样子任务之间的关联性,避免过多的依赖

    5.考虑并发以及潜在的并行化

    6.尽量的经过任务化的形式来设计程序

相关文章
相关标签/搜索