当前位置:   article > 正文

C# Queue、List、LinkedList 性能对比

C# Queue、List、LinkedList 性能对比

最近需要用到一个先进先出的缓存列队,对比了一下几个可能用的类的性能。。

向添加100w个数据,然后每次弹出100个,输出用时

  1. Queue<int> q = new Queue<int>();
  2. List<int> l = new List<int>();
  3. LinkedList<int> ll = new LinkedList<int>();
  4. var count = 1000 * 1000;
  5. var t = DateTime.Now;
  6. for (int i = 0; i < count; i++)
  7. {
  8. q.Enqueue(i);
  9. }
  10. Console.WriteLine("添加Enqueue用时:" + (DateTime.Now - t).TotalMilliseconds);
  11. t = DateTime.Now;
  12. for (int i = 0; i < count; i++)
  13. {
  14. l.Add(i);
  15. }
  16. Console.WriteLine("添加List用时:" + (DateTime.Now - t).TotalMilliseconds);
  17. t = DateTime.Now;
  18. for (int i = 0; i < count; i++)
  19. {
  20. ll.AddLast(i);
  21. }
  22. Console.WriteLine("添加LinkedList用时:" + (DateTime.Now - t).TotalMilliseconds);
  23. t = DateTime.Now;
  24. while (q.Count > 0)
  25. {
  26. for (int i = 0; i < 100; i++)
  27. {
  28. q.Dequeue();
  29. }
  30. }
  31. Console.WriteLine("弹出Enqueue用时:" + (DateTime.Now - t).TotalMilliseconds);
  32. t = DateTime.Now;
  33. while (l.Count > 0)
  34. {
  35. l.RemoveRange(0, 100);
  36. }
  37. Console.WriteLine("弹出List用时:" + (DateTime.Now - t).TotalMilliseconds);
  38. t = DateTime.Now;
  39. while (ll.Count > 0)
  40. {
  41. for (int i = 0; i < 100; i++)
  42. {
  43. ll.RemoveFirst();
  44. }
  45. }
  46. Console.WriteLine("弹出LinkedList用时:" + (DateTime.Now - t).TotalMilliseconds);

输出结果

添加Enqueue用时:10.9944
添加List用时:6.9974
添加LinkedList用时:97.7324
弹出Enqueue用时:7.9959
弹出List用时:699.3315
弹出LinkedList用时:8.0135

所以,结果显而易见,应该用  Queue

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/786607
推荐阅读
相关标签
  

闽ICP备14008679号