Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.43 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.Immutable;
  4. using System.Linq;
  5. using BenchmarkDotNet.Attributes;
  6. using BenchmarkDotNet.Running;
  7. using JetBrains.Annotations;
  8.  
  9. // ReSharper disable LoopCanBeConvertedToQuery
  10. // ReSharper disable ForCanBeConvertedToForeach
  11.  
  12. namespace ClassLibrary1
  13. {
  14.     public class ArrayBenchmark
  15.     {
  16.         private readonly ImmutableArray<int> _immutableArray;
  17.         [NotNull] private readonly int[] _array;
  18.         [NotNull] private readonly List<int> _list;
  19.  
  20.         public ArrayBenchmark()
  21.         {
  22.             var random = new Random(12345);
  23.             var data = Enumerable.Range(0, 10000).Select(i => random.Next()).ToArray();
  24.  
  25.             _immutableArray = data.ToImmutableArray();
  26.             _array = data.ToArray();
  27.             _list = data.ToList();
  28.         }
  29.  
  30.         [Benchmark]
  31.         public int ImmutableArrayForeach()
  32.         {
  33.             var sum = 0;
  34.             foreach (var i in _immutableArray)
  35.             {
  36.                 sum += i;
  37.             }
  38.  
  39.             return sum;
  40.         }
  41.  
  42.         [Benchmark]
  43.         public int ImmutableArrayFor()
  44.         {
  45.             var sum = 0;
  46.             for (var i = 0; i < _immutableArray.Length; i++)
  47.             {
  48.                 sum += _immutableArray[i];
  49.             }
  50.  
  51.             return sum;
  52.         }
  53.  
  54.         [Benchmark]
  55.         public int ArrayForeach()
  56.         {
  57.             var sum = 0;
  58.             foreach (var i in _array)
  59.             {
  60.                 sum += i;
  61.             }
  62.  
  63.             return sum;
  64.         }
  65.  
  66.         [Benchmark]
  67.         public int ArrayFor()
  68.         {
  69.             var sum = 0;
  70.             for (var i = 0; i < _array.Length; i++)
  71.             {
  72.                 sum += _array[i];
  73.             }
  74.  
  75.             return sum;
  76.         }
  77.  
  78.  
  79.         [Benchmark]
  80.         public int ListForeach()
  81.         {
  82.             var sum = 0;
  83.             foreach (var i in _list)
  84.             {
  85.                 sum += i;
  86.             }
  87.  
  88.             return sum;
  89.         }
  90.  
  91.         [Benchmark]
  92.         public int ListFor()
  93.         {
  94.             var sum = 0;
  95.             for (var i = 0; i < _list.Count; i++)
  96.             {
  97.                 sum += _list[i];
  98.             }
  99.  
  100.             return sum;
  101.         }
  102.     }
  103.  
  104.     public class Program
  105.     {
  106.         public static void Main()
  107.         {
  108.             BenchmarkRunner.Run<ArrayBenchmark>();
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement