Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement