日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺談VisualStudio2010并行運(yùn)算原理

在這里我們將介紹Visual Studio 2010并行運(yùn)算的原理,希望通過(guò)本文能對(duì)大家了解Visual Studio 2010并行運(yùn)算。這也是大家比價(jià)關(guān)心的熱點(diǎn)。

創(chuàng)新互聯(lián)建站從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元葫蘆島做網(wǎng)站,已為上家服務(wù),為葫蘆島各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

Visual Studio 2010 Beta2&.Net 4.0的Beta2相比Beta1在性能上有了很大的改進(jìn),已經(jīng)基本可以使用了。.NET 4.0給我們帶來(lái)許多新特性,如動(dòng)態(tài)類型、云平臺(tái)、并行運(yùn)算等。本文討論一下.NET 4.0的并行運(yùn)算。

其實(shí)并行運(yùn)算并不是在.Net 4.0才有的。大家都知道,通過(guò)增加CPU的主頻可以提高CPU的性能,但由于設(shè)計(jì)的限制,主頻是不可能無(wú)限制的提高。這個(gè)時(shí)候,把提高性能的方式轉(zhuǎn)向使用多個(gè)心(多核),現(xiàn)在的電腦幾乎都是多核的。但在軟件中并還沒(méi)有跟上這個(gè)節(jié)奏,大多數(shù)軟件還是采用傳統(tǒng)的方式,并沒(méi)有很好的發(fā)揮多核的優(yōu)勢(shì)。

微軟的并行運(yùn)算平臺(tái)(Microsoft’s Parallel Computing Platform (PCP))提供了這樣一個(gè)工具,讓軟件開發(fā)人員可以有效的使用多核提供的性能。本文就進(jìn)行一個(gè)簡(jiǎn)單的測(cè)試,來(lái)體驗(yàn)Visual Studio 2010并行運(yùn)算的性能。

1. 新建一個(gè)List,并在開始時(shí)初始化

 
 
 
 
  1. public static IList<int> Datas = new List<int>();  
  2.  
  3.        static void Main(string[] args)  
  4.        {  
  5.            InitializeData();  
  6.  
  7.              
  8.            Console.Read();  
  9.        }  
  10.  
  11.        ///   
  12.        /// 初始化數(shù)據(jù)  
  13.        ///   
  14.        private static void InitializeData()  
  15.        {  
  16.            Datas.Clear();  
  17.            for (int i = 0; i < 20; i++)  
  18.            {  
  19.                Datas.Add(i);  
  20.            }  
  21.        } 

2.設(shè)計(jì)耗時(shí)的方法,并來(lái)在各種運(yùn)算方式中調(diào)用

  
  
  
  
  1.  ///   
  2. /// 獲得數(shù)據(jù)  
  3. ///   
  4. ///   
  5. ///   
  6. private static int GetData(int i)  
  7. {  
  8.     System.Threading.Thread.Sleep(100);  
  9.     return i;  

3. 設(shè)計(jì)一般的運(yùn)算方式,調(diào)用GetData方法   

  
  
  
  
  1. ///   
  2.      /// 采用一般for循環(huán)  
  3.      ///   
  4.      private static void UseFor()  
  5.      {  
  6.          for (int i = 0; i < 20; i++)  
  7.          {  
  8.              GetData(Datas[i]);  
  9.          }  
  10.      }  
  11.  
  12.      ///   
  13.      /// 采用一般的foreach  
  14.      ///   
  15.      private static void UseForeach()  
  16.      {  
  17.          foreach (var item in Datas)  
  18.          {  
  19.              GetData(item);  
  20.          }  
  21.      } 

4.采用并行運(yùn)算的方式,調(diào)用GetData方法

 
 
 
 
  1. ///   
  2.       /// 采用并行for循環(huán)  
  3.       ///   
  4.       private static void UseParalleFor()  
  5.       {  
  6.           Parallel.For(0, 20, (i) =>  
  7.           {  
  8.               GetData(Datas[i]);  
  9.           });  
  10.  
  11.       }  
  12.  
  13.       ///   
  14.       /// 采用并行的foreach  
  15.       ///   
  16.       private static void UserParalleForeach()  
  17.       {  
  18.           Parallel.ForEach(Datas, (t) => { GetData(t); });  
  19.       } 

5.最后采用老趙設(shè)計(jì)的CodeTimer來(lái)比較每一種運(yùn)算方式的耗時(shí),在Main函數(shù)中加入測(cè)試代碼

  
  
  
  
  1. static void Main(string[] args)  
  2.        {  
  3.            InitializeData();  
  4.  
  5.            CodeTimer.Initialize();  
  6.            CodeTimer.WriteDebug("一般for循環(huán):", 5, () => { UseFor(); });  
  7.            CodeTimer.WriteDebug("一般foreach循環(huán):", 5, () => { UseForeach(); });  
  8.            CodeTimer.WriteDebug("并行for循環(huán):", 5, () => { UseParalleFor(); });  
  9.            CodeTimer.WriteDebug("并行foreach循環(huán):", 5, () => { UserParalleForeach(); });  
  10.  
  11.            Console.Read();  
  12.        } 

6.運(yùn)算結(jié)果:

可以看出,并行運(yùn)算提高的性能還是比較明顯的。

下面我們把GetData方法修改一下,把線程延遲的的代碼去掉

  
  
  
  
  1. ///   
  2. /// 獲得數(shù)據(jù)  
  3. ///   
  4. ///   
  5. ///   
  6. private static int GetData(int i)  
  7. {  
  8.    // System.Threading.Thread.Sleep(100);  
  9.     return i;  

再次運(yùn)行

可以看出,這時(shí)候并行運(yùn)算不但沒(méi)降低消耗的時(shí)間,反而用了更多的時(shí)間。經(jīng)過(guò)多次測(cè)試發(fā)現(xiàn),采用并行運(yùn)算跟程序的設(shè)計(jì)結(jié)構(gòu)有很大的關(guān)系,如果設(shè)計(jì)不合理,反而會(huì)消耗更多時(shí)間。


分享名稱:淺談VisualStudio2010并行運(yùn)算原理
文章位置:http://www.5511xx.com/article/cdchpjh.html