最近在實施項目過程當中遇到了一些問題,因爲工廠加工數據量稍微有點大,系統運行表現的很是慢,有些人說機器的配置不夠,網絡寬帶不夠等等因素致使系統運行緩慢,固然這的確也是一部分緣由。可是從我我的的角度來看,目前的系統生產的數據量雖然有點大,可是機器的性能並無徹底發揮出來。數據庫
如今系統的機器配置狀況是兩臺服務器,一臺是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.儘量的經過任務化的形式來設計程序