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

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

新聞中心

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

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

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

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

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

eg1:一個(gè)簡單的key對應(yīng)一條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:一個(gè)拼裝的Key對應(yīng)多條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}";
       }
   }
}

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


文章標(biāo)題:C#減少嵌套循環(huán)具體方法
當(dāng)前URL:http://m.5511xx.com/article/dhgsseo.html