|
using BenchmarkDotNet.Attributes; |
|
|
|
namespace Esprima.Benchmark |
|
{ |
|
[MemoryDiagnoser] |
|
public class ListBenchmark |
|
{ |
|
private const int Size = 10_000; |
|
private Ast.List<int> _astList; |
|
private System.Collections.Generic.List<int> _bclList; |
|
|
|
[GlobalSetup] |
|
public void OneTimeSetup() |
|
{ |
|
_astList = new Ast.List<int>(); |
|
for (var i = 0; i < Size; ++i) _astList.Add(i); |
|
|
|
_bclList = new System.Collections.Generic.List<int>(); |
|
for (var i = 0; i < Size; ++i) _bclList.Add(i); |
|
} |
|
|
|
[Benchmark] |
|
public Ast.List<int> AstListAdd() |
|
{ |
|
var items = new Ast.List<int>(); |
|
for (var i = 0; i < Size; ++i) items.Add(i); |
|
|
|
return items; |
|
} |
|
|
|
[Benchmark] |
|
public System.Collections.Generic.List<int> BclListAdd() |
|
{ |
|
var items = new System.Collections.Generic.List<int>(); |
|
for (var i = 0; i < Size; ++i) items.Add(i); |
|
return items; |
|
} |
|
|
|
[Benchmark] |
|
public int AstListFor() |
|
{ |
|
var sum = 0; |
|
for (var i = 0; i < _astList.Count; ++i) sum += _astList[i]; |
|
|
|
return sum; |
|
} |
|
|
|
[Benchmark] |
|
public int BclListFor() |
|
{ |
|
var sum = 0; |
|
for (var i = 0; i < _bclList.Count; ++i) sum += _bclList[i]; |
|
|
|
return sum; |
|
} |
|
|
|
[Benchmark] |
|
public int AstListAddAndFor() |
|
{ |
|
var items = new Ast.List<int>(); |
|
for (var i = 0; i < Size; ++i) items.Add(i); |
|
|
|
var sum = 0; |
|
for (var i = 0; i < items.Count; ++i) sum += items[i]; |
|
|
|
return sum; |
|
} |
|
|
|
[Benchmark] |
|
public int BclListAddAndFor() |
|
{ |
|
var items = new System.Collections.Generic.List<int>(); |
|
for (var i = 0; i < Size; ++i) items.Add(i); |
|
|
|
var sum = 0; |
|
for (var i = 0; i < items.Count; ++i) sum += items[i]; |
|
|
|
return sum; |
|
} |
|
|
|
|
|
[Benchmark] |
|
public int AstListAddAndForEach() |
|
{ |
|
var items = new Ast.List<int>(); |
|
for (var i = 0; i < Size; ++i) items.Add(i); |
|
|
|
var sum = 0; |
|
foreach (var t in items) sum += t; |
|
|
|
return sum; |
|
} |
|
|
|
[Benchmark] |
|
public int BclListAddAndForEach() |
|
{ |
|
var items = new System.Collections.Generic.List<int>(); |
|
for (var i = 0; i < Size; ++i) items.Add(i); |
|
|
|
var sum = 0; |
|
foreach (var t in items) sum += t; |
|
|
|
return sum; |
|
} |
|
|
|
[Benchmark] |
|
public int AstListForEach() |
|
{ |
|
var sum = 0; |
|
foreach (var t in _astList) sum += t; |
|
|
|
return sum; |
|
} |
|
|
|
[Benchmark] |
|
public int BclListForEach() |
|
{ |
|
var sum = 0; |
|
foreach (var t in _bclList) sum += t; |
|
|
|
return sum; |
|
} |
|
} |
|
} |