Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using BenchmarkDotNet.Attributes;
- namespace ConsoleApp2
- {
- [CsvExporter]
- [CsvMeasurementsExporter]
- public class AccessBench
- {
- private int[,] _matrix;
- private int[][] _jagged;
- [Params(2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048)] public int _size;
- [GlobalSetup]
- public void GlobalSetup()
- {
- _matrix = new int[_size, _size];
- _jagged = new int[_size][];
- for (int r = 0; r < _size; r++)
- {
- _jagged[r] = new int[_size];
- for (int c = 0; c < _size; c++)
- {
- _matrix[r, c] = r * 10 + c;
- _jagged[r][c] = r * 10 + c;
- }
- }
- }
- [Benchmark]
- [BenchmarkCategory("Read")]
- public int ReadMatrixRowCol()
- {
- var accum = 0;
- for (int r = 0; r < _size; r++)
- for (int c = 0; c < _size; c++)
- {
- accum += _matrix[r, c];
- }
- return accum;
- }
- [Benchmark]
- [BenchmarkCategory("Read")]
- public int ReadJaggedRowCol()
- {
- var accum = 0;
- foreach (var row in _jagged)
- {
- foreach (var i in row)
- {
- accum += i;
- }
- }
- return accum;
- }
- [Benchmark]
- [BenchmarkCategory("Read")]
- public int ReadMatrixColRow()
- {
- var accum = 0;
- for (int c = 0; c < _size; c++)
- for (int r = 0; r < _size; r++)
- {
- accum += _matrix[r, c];
- }
- return accum;
- }
- [Benchmark]
- [BenchmarkCategory("Read")]
- public int ReadJaggedColRow()
- {
- var accum = 0;
- for (int c = 0; c < _size; c++)
- for (int r = 0; r < _size; r++)
- {
- accum += _jagged[r][c];
- }
- return accum;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement