Advertisement
atsukanrock

List<T> vs yield return in performance

Apr 8th, 2012
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.80 KB | None | 0 0
  1. public void ListAndYield()
  2. {
  3.     const int count = 10000000;
  4.  
  5.     var sw = new Stopwatch();
  6.     sw.Start();
  7.     var list = ByList(count).ToArray();
  8.     sw.Stop();
  9.     Debug.WriteLine(string.Format(
  10.         "List {1:#,##0} items: {0:#,##0.000} ms", sw.ElapsedMilliseconds, list.Count()));
  11.  
  12.     sw.Reset();
  13.     sw.Start();
  14.     list = ByYield(count).ToArray();
  15.     sw.Stop();
  16.     Debug.WriteLine(string.Format(
  17.         "Yield {1:#,##0} items: {0:#,##0.000} ms", sw.ElapsedMilliseconds, list.Count()));
  18. }
  19.  
  20. private IEnumerable<int> ByList(int count)
  21. {
  22.     var ret = new List<int>();
  23.     for(var i = 0; i < count; i++)
  24.     {
  25.         ret.Add(i);
  26.     }
  27.     return ret;
  28. }
  29.  
  30. private IEnumerable<int> ByYield(int count)
  31. {
  32.     for(var i = 0; i < count; i++)
  33.     {
  34.         yield return i;
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement