c#编程最佳实践:合适的集合, 选择Dic字典、List列表还是Array数组

c#编程最佳实践:合适的集合, 选择Dic字典、List列表还是Array数组

对于许多类型,我们宁愿不决定在日常编程生活中使用什么数据类型。就在几个月前,我也是其中之一。但是当我开始学习编程中的最佳实践以提高代码性能时,我了解到了错误的数据类型是如何影响代码的。我将展示一个演示来证明这个概念。

static void Main(string[] args)  {      List<Int32> li = new List<int>();      Stopwatch sw =new Stopwatch();      sw.Start();      for (int i = 0; i < 10000; i++)      {          li.Add(i);      }      sw.Stop();      Console.Write("Using Arraylist(Object)" + sw.ElapsedTicks + "\n");      sw.Reset();      sw.Start();      Int32[] a = new Int32[10000];      for (int i = 0; i < 10000; i++)      {          a[i] = i;      }      sw.Stop();      Console.Write("Using Value(Integer Array)" + sw.ElapsedTicks);      Console.ReadLine();  }
www.zeeklog.com  - c#编程最佳实践:合适的集合, 选择Dic字典、List列表还是Array数组

在上面的代码中,首先我使用了一个list来存储1000个整数值,在第二次执行相同的操作时,我使用了一个整数数组。我的输出截图显示了哪种存储机制最适合整数数组。现在,你可能会想为什么这个list要花更多的时间呢?原因是,list以对象格式存储数据,当我们首先尝试存储值类型时,它将其转换为引用类型,然后再存储。因此,第一点是始终选择适当的存储机制以获得最佳性能。

根据你的目的选择最好的集合

我们.net开发人员非常熟悉c#中的集合以及它们用来存储值的方法。让我们看看它们是如何执行搜索的。查看搜索整数的性能。这是我的代码。

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using System.Diagnostics;  using System.IO;  using System.Net;  using System.Net.NetworkInformation;  namespace Test1  {      class Program      {          static void Main(string[] args)          {              List<Int32> li = new List<Int32>(1000);              Dictionary<int, int> di = new Dictionary<int, int>(1000);              int[] arr = new int[1000];              int a;              for (int i = 0; i < 1000; i++)              {                  li.Add(i);                  di.Add(i, i);                  arr[i] = i;              }              Stopwatch sw = new Stopwatch();              sw.Start();              a = li[500];              sw.Stop();              Console.WriteLine("From list:- " + sw.ElapsedTicks);              sw.Start();              a = arr[500];              sw.Stop();              Console.WriteLine("From Integer array:- " + sw.ElapsedTicks);              sw.Restart();              a = di[500];              sw.Stop();              Console.WriteLine("From Dictionary:- " + sw.ElapsedTicks);              Console.ReadLine();          }      }  }

输出在这里:

www.zeeklog.com  - c#编程最佳实践:合适的集合, 选择Dic字典、List列表还是Array数组

我们可以清楚地看到,在字典的情况下,搜索的性能是最差的,而在list和整数数组的情况下,性能非常相似。

www.zeeklog.com  - c#编程最佳实践:合适的集合, 选择Dic字典、List列表还是Array数组