SHARE
TWEET

Untitled

a guest Apr 22nd, 2019 83 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using BenchmarkDotNet.Attributes;
  2.  
  3. namespace ConsoleApp2
  4. {
  5.     [CsvExporter]
  6.     [CsvMeasurementsExporter]
  7.     public class AccessBench
  8.     {
  9.         private int[,] _matrix;
  10.         private int[][] _jagged;
  11.  
  12.         [Params(2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048)] public int _size;
  13.  
  14.         [GlobalSetup]
  15.         public void GlobalSetup()
  16.         {
  17.             _matrix = new int[_size, _size];
  18.             _jagged = new int[_size][];
  19.  
  20.             for (int r = 0; r < _size; r++)
  21.             {
  22.                 _jagged[r] = new int[_size];
  23.                 for (int c = 0; c < _size; c++)
  24.                 {
  25.                     _matrix[r, c] = r * 10 + c;
  26.                     _jagged[r][c] = r * 10 + c;
  27.                 }
  28.             }
  29.         }
  30.  
  31.         [Benchmark]
  32.         [BenchmarkCategory("Read")]
  33.         public int ReadMatrixRowCol()
  34.         {
  35.             var accum = 0;
  36.  
  37.             for (int r = 0; r < _size; r++)
  38.                 for (int c = 0; c < _size; c++)
  39.                 {
  40.                     accum += _matrix[r, c];
  41.                 }
  42.  
  43.             return accum;
  44.         }
  45.  
  46.         [Benchmark]
  47.         [BenchmarkCategory("Read")]
  48.         public int ReadJaggedRowCol()
  49.         {
  50.             var accum = 0;
  51.  
  52.             foreach (var row in _jagged)
  53.             {
  54.                 foreach (var i in row)
  55.                 {
  56.                     accum += i;
  57.                 }
  58.             }
  59.             return accum;
  60.         }
  61.  
  62.         [Benchmark]
  63.         [BenchmarkCategory("Read")]
  64.         public int ReadMatrixColRow()
  65.         {
  66.             var accum = 0;
  67.  
  68.             for (int c = 0; c < _size; c++)
  69.                 for (int r = 0; r < _size; r++)
  70.                 {
  71.                     accum += _matrix[r, c];
  72.                 }
  73.  
  74.             return accum;
  75.         }
  76.  
  77.         [Benchmark]
  78.         [BenchmarkCategory("Read")]
  79.         public int ReadJaggedColRow()
  80.         {
  81.             var accum = 0;
  82.  
  83.             for (int c = 0; c < _size; c++)
  84.                 for (int r = 0; r < _size; r++)
  85.                 {
  86.                     accum += _jagged[r][c];
  87.                 }
  88.  
  89.             return accum;
  90.         }
  91.     }
  92. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top