浅析C#数组初始化性能测试

这里介绍C#数组初始化性能测试,最近经常用到数组,每到一定时候就需要对C#数组全部元素进行清零。由于C#不提供memset()方法。所以进行了以下的测试。
首页 新闻资讯 行业资讯 浅析C#数组初始化性能测试

C#数组有很多值得学习的地方,这里我们主要介绍C#数组初始化测试,包括介绍memset函数等方面。

C#数组初始化

最近我在写数据压缩的程序,经常用到数组。每到一定时候就需要对C#数组全部元素进行清零。由于C#不提供memset()方法。所以进行了以下的测试。

主要程序部份:

复制

static void Main(string[] args)  {  int i,k;  double p = 0;  DateTime s, e;  byte[] test = new byte[65536];  byte[] test2 = new byte[65536];  for(int i = 0; i < 10; i++)  {  s = DateTime.Now;  for(j=0; j<50000; j++)  {  //***************//  }  e = DateTime.Now;  TimeSpan c = e - s;  Console.WriteLine(c.TotalMilliseconds.ToString());  p += c.TotalMilliseconds;  }   p /= 10;  Console.WriteLine("***" + p.ToString() + "***");  Console.Read();  }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

  • 24.

仿照C++自写一个memset函数:

复制

public static void memset(byte[] buf, byte val, int size)  {  int i;  for(i=0; i < size; i++)  buf[i] = val;  }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

然后理行测试,结果如下:

方法    最长      最短         平均

1        1937.5    1812.5    1842.1875  

2        4593.75    4625      4584.375

3       6046.875  5984.375  6001.5625

4         562.5        640.5       581.25

5          812.5         750       770.3125

计算机:P43.0E(超线程开启)/DDR400 512M(双通道) 软件环境:Win XP - Sp2/VS2003 单位:毫秒(ms) 

结果很显然,Array.Clear()方法是最终的优胜者。但它有一个缺点,就是只可以将数组清空(零)。如果要把数组设置为某一特定格式CopyTo()以空间换时间的方式是最好的。以上介绍C#数组初始化测试

【编辑推荐】

  1. C#数组和指针全面讨论

  2. 简单介绍C#数组和函数

  3. C#数组初始化的应用实例解析

  4. 学习Visual C#数组速成法

  5. 浅谈C#数组工作方式

13    2009-09-17 15:39:56    C#数组初始化