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

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

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

【编辑推荐】

  1. C#数组和指针全面讨论
  2. 简单介绍C#数组和函数
  3. C#数组初始化的应用实例解析
  4. 学习Visual C#数组速成法
  5. 浅谈C#数组工作方式
责任编辑:佚名 来源: IT168
相关推荐

2009-09-18 11:15:52

C#数组初始化

2009-09-02 16:52:55

C#数组初始化

2009-09-17 16:06:22

C#数组初始化

2009-08-31 10:38:34

C#变量初始化

2009-08-28 11:24:48

C#一维数组初始化

2009-09-17 16:17:41

C#参差数组初始化

2009-08-28 11:09:35

C#数组初始化

2009-09-18 11:33:37

C#二维数组初始化

2009-08-26 18:28:44

C#数组

2009-08-26 13:07:07

C#交错数组

2009-07-31 17:51:27

C#对象初始化

2009-08-28 11:43:26

C#数组初始化

2009-08-06 10:14:15

C#引用类型数组

2009-08-07 13:39:13

C#定义整型数组

2009-08-31 10:30:29

C#变量初始化

2009-08-14 17:52:27

C#对象初始化

2009-08-27 10:31:39

C#对象初始化器

2009-09-02 10:58:02

C#动态数组

2009-09-18 10:58:31

C#数组操作

2009-08-28 14:25:57

C# byte数组
点赞
收藏

51CTO技术栈公众号