日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#減少嵌套循環(huán)具體方法

最近在解決性能優(yōu)化的問題,看到了一堆嵌套循環(huán),四五層級的循環(huán)真的有點過分了,在數(shù)據(jù)量成萬,十萬級別的時候,真的非常影響性能。本文介紹了C# 減少嵌套循環(huán)的兩種方法,幫助各位選擇適合自己的優(yōu)化方案,優(yōu)化程序性能

公司主營業(yè)務:成都網(wǎng)站設計、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出平原免費做網(wǎng)站回饋大家。

當然,除了關注明顯的循環(huán)例如for、foreach,還應該關注隱晦一點的循環(huán),例如datatable.select(),linq之類的list.where、list.find等。

要優(yōu)化,排除業(yè)務問題,要考慮的就是代碼技術了??吹窖h(huán)查找數(shù)據(jù),盡可能向Dictionary靠攏。

eg1:一個簡單的key對應一條datarow

優(yōu)化前:

using System.Linq;

namespace ConsoleApp1
{
   internal class Program
   {
       private static void Main(string[] args)
       {
           DataTable table = new DataTable();
           ...
           for (int i = 0; i  r["num"].ToString() == i.ToString());
               ...
           }
       }
   }
}

優(yōu)化后:

using System.Data;
using System.Linq;

namespace ConsoleApp1
{
   internal class Program
   {
       private static void Main(string[] args)
       {
           DataTable table = new DataTable();
           ...
           var dict = table.AsEnumerable().ToDictionary(r => r["num"].ToString());
           for (int i = 0; i if (dict.ContainsKey(i.ToString()))
               {
                   var row = dict[i.ToString()];
               }
               ...
           }
       }      
   }
}

eg2:一個拼裝的Key對應多條DataRow的字典

優(yōu)化前:

using System.Data;
using System.Linq;

namespace ConsoleApp1
{
   internal class Program
   {
       private static void Main(string[] args)
       {
           DataTable table = new DataTable();  
           ...
           for (int i = 0; i "";
               ...
               var rows = table.AsEnumerable().Where(r => r["num"].ToString() == i.ToString() && r["name"].ToString() == name);
           }
       }            
   }
}

優(yōu)化后:

using System.Data;
using System.Linq;

namespace ConsoleApp1
{
   internal class Program
   {
       private static void Main(string[] args)
       {
           DataTable table = new DataTable();
           var group = table.AsEnumerable().GroupBy(r => GetGroupKey(r["num"].ToString(), r["name"].ToString()));
           var dict= group.ToDictionary(r=>r.Key);
           ...
           for (int i = 0; i "";
               var key = GetGroupKey(i.ToString(), name);
               if (dict.ContainsKey(key))
               {
                   var rows = dict[key];
               }              
               ...
           }
       }      
       
       private static string GetGroupKey(string _num,string _name)
       {
           return $"num={_num}|name={_name}";
       }
   }
}

量變會引起質(zhì)變。


名稱欄目:C#減少嵌套循環(huán)具體方法
轉載注明:http://www.dlmjj.cn/article/dhgsseo.html