龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C#开发 >

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

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
C#数组有很多值得学习的地方,这里我们主要介绍C#数组初始化测试,包括介绍memset函数等方面。 C#数组初始化 最近我在写数据压缩的程序,经常用到数组。每到一定时候就需要对C#数组

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

C#数组初始化

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

主要程序部份:

  1. static void Main(string[] args)  
  2. {  
  3. int i,k;  
  4. double p = 0;  
  5. DateTime s, e;  
  6. byte[] test = new byte[65536];  
  7. byte[] test2 = new byte[65536];  
  8. for(int i = 0; i < 10; i++)  
  9. {  
  10. s = DateTime.Now;  
  11. for(j=0; j<50000; j++)  
  12. {  
  13. //***************//  
  14. }  
  15. e = DateTime.Now;  
  16. TimeSpan c = e - s;  
  17. Console.WriteLine(c.TotalMilliseconds.ToString());  
  18. p += c.TotalMilliseconds;  
  19. }  
  20.  
  21. p /= 10;  
  22. Console.WriteLine("***" + p.ToString() + "***");  
  23. Console.Read();  

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

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

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

方法    最长      最短         平均

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#数组初始化测试


精彩图集

赞助商链接