天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

VS2010&.Net 4.0 之并行運算(Parallel)(For、Foreach)

  VS2010&.NET 4.0的Beta2相比Beta1在性能上有了很大的改進,已經基本可以使用了。.NET 4.0給我們帶來許多新特性,如動態類型、云平臺、并行運算等。本文討論一下.NET 4.0的并行運算。

  其實并行運算并不是在.NET 4.0才有的。大家都知道,通過增加CPU的主頻可以提高CPU的性能,但由于設計的限制,主頻是不可能無限制的提高。這個時候,把提高性能的方式轉向使用多個心(多核),現在的電腦幾乎都是多核的。但在軟件中并還沒有跟上這個節奏,大多數軟件還是采用傳統的方式,并沒有很好的發揮多核的優勢。

  微軟的并行運算平臺(Microsoft’s Parallel Computing Platform (PCP))提供了這樣一個工具,讓軟件開發人員可以有效的使用多核提供的性能。本文就進行一個簡單的測試,來體驗并行運算的性能。

  1. 新建一個List,并在開始時初始化

public static IList<int> Datas = new List<int>();       static void Main(string[] args)       {           InitializeData();           Console.Read();       }       /// <summary>       /// 初始化數據       /// </summary>       private static void InitializeData()       {           Datas.Clear();           for (int i = 0; i < 20; i++)           {               Datas.Add(i);           }       }

  2.設計耗時的方法,并來在各種運算方式中調用

       /// <summary>      /// 獲得數據      /// </summary>      /// <param name="i"></param>      /// <returns></returns>      private static int GetData(int i)      {          System.Threading.Thread.Sleep(100);          return i;      }

  3. 設計一般的運算方式,調用GetData方法

        /// <summary>       /// 采用一般for循環       /// </summary>       private static void UseFor()       {           for (int i = 0; i < 20; i++)           {               GetData(Datas[i]);           }       }       /// <summary>       /// 采用一般的foreach       /// </summary>       private static void UseForeach()       {           foreach (var item in Datas)           {               GetData(item);           }       }

  4.采用并行運算的方式,調用GetData方法

        /// <summary>       /// 采用并行for循環       /// </summary>       private static void UseParalleFor()       {           Parallel.For(0, 20, (i) =>           {               GetData(Datas[i]);           });       }       /// <summary>       /// 采用并行的foreach       /// </summary>       private static void UserParalleForeach()       {           Parallel.ForEach(Datas, (t) => { GetData(t); });       }

  5.最后采用老趙設計的CodeTimer來比較每一種運算方式的耗時,在Main函數中加入測試代碼

static void Main(string[] args)       {           InitializeData();           CodeTimer.Initialize();           CodeTimer.WriteDebug("一般for循環:", 5, () => { UseFor(); });           CodeTimer.WriteDebug("一般foreach循環:", 5, () => { UseForeach(); });           CodeTimer.WriteDebug("并行for循環:", 5, () => { UseParalleFor(); });           CodeTimer.WriteDebug("并行foreach循環:", 5, () => { UserParalleForeach(); });           Console.Read();       }

  6.運算結果:

截圖00

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

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

/// <summary>/// 獲得數據/// </summary>/// <param name="i"></param>/// <returns></returns>private static int GetData(int i){   // System.Threading.Thread.Sleep(100);    return i;}

  再次運行

截圖01

  可以看出,這時候并行運算不但沒降低消耗的時間,反而用了更多的時間。經過多次測試發現,采用并行運算跟程序的設計結構有很大的關系,如果設計不合理,反而會消耗更多時間。

NET技術VS2010&amp;amp;.Net 4.0 之并行運算(Parallel)(For、Foreach),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 高清一区二区亚洲欧美日韩 | bbwvideos欧美老妇 | 97国产精品久久精品国产 | 后入式啪gif动态图 后入式狂顶免费视频 | 国产精品久久久久影院免费 | 国产一区二区青青精品久久 | 噼里啪啦免费观看视频大全 | 99视频免视看| 国产精品爽爽久久久久久蜜桃网站 | 亚洲三级精品 | 解开白丝老师的短裙猛烈进入 | 久久精品国产在热亚洲完整版 | 在线成人精品国产区免费 | 亚洲1卡二卡3卡4卡新区在线 | 快播免费电影 | 久久麻豆亚洲AV成人无码国产 | 亚洲免费在线观看 | 久久99热狠狠色AV蜜臀 | 精品国产乱码久久久久乱码 | 自拍黄色片 | 国产91无毒不卡在线观看 | 果冻传媒 在线播放观看 | 嫩草影院永久在线一二三四 | 婷婷午夜影院 | 色狗综合网 | 少妇厨房愉情理9伦片视频 少妇被躁爽到高潮无码久久 | 97色色极品av影院 | 丰满的女朋友韩国版在线观看 | 性插图动态图无遮挡 | 20岁中国男同志china1069 20岁αsrian男同志免费 | 牛牛在线国产精品 | 青草久久精品亚洲综合专区 | 青青伊人精品 | 亲胸揉胸膜下刺激视频在线观看 | 最新国产成人综合在线观看 | 亚洲精品国产精品麻豆99 | 高H各种PLAY全肉NP | 日本全彩黄漫无遮挡 | 色人格影院第四色 | 黄色小说在线 | 97人妻在线公开视频在线观看 |