diff --git a/src/benchmarks/micro/libraries/System.Collections/CreateAddAndRemove.cs b/src/benchmarks/micro/libraries/System.Collections/CreateAddAndRemove.cs index 0bbc9a59ad8..a4e24262c88 100644 --- a/src/benchmarks/micro/libraries/System.Collections/CreateAddAndRemove.cs +++ b/src/benchmarks/micro/libraries/System.Collections/CreateAddAndRemove.cs @@ -6,6 +6,7 @@ using BenchmarkDotNet.Extensions; using MicroBenchmarks; using System.Collections.Generic; +using System.Collections.Immutable; namespace System.Collections { @@ -157,5 +158,125 @@ public Queue Queue() } return queue; } + + [Benchmark] + public ImmutableArray ImmutableArray() + { + ImmutableArray immutableArray = ImmutableArray.Empty; + foreach (T uniqueKey in _keys) + { + immutableArray = immutableArray.Add(uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableArray = immutableArray.Remove(uniqueKey); + } + return immutableArray; + } + + [Benchmark] + public ImmutableList ImmutableList() + { + ImmutableList immutableList = ImmutableList.Empty; + foreach (T uniqueKey in _keys) + { + immutableList = immutableList.Add(uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableList = immutableList.Remove(uniqueKey); + } + return immutableList; + } + + [Benchmark] + public ImmutableHashSet ImmutableHashSet() + { + ImmutableHashSet immutableHashSet = ImmutableHashSet.Empty; + foreach (T uniqueKey in _keys) + { + immutableHashSet = immutableHashSet.Add(uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableHashSet = immutableHashSet.Remove(uniqueKey); + } + return immutableHashSet; + } + + [Benchmark] + public ImmutableSortedSet ImmutableSortedSet() + { + ImmutableSortedSet immutableSortedSet = ImmutableSortedSet.Empty; + foreach (T uniqueKey in _keys) + { + immutableSortedSet = immutableSortedSet.Add(uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableSortedSet = immutableSortedSet.Remove(uniqueKey); + } + return immutableSortedSet; + } + + [Benchmark] + public ImmutableDictionary ImmutableDictionary() + { + ImmutableDictionary immutableDictionary = ImmutableDictionary.Empty; + foreach (T uniqueKey in _keys) + { + immutableDictionary = immutableDictionary.Add(uniqueKey, uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableDictionary = immutableDictionary.Remove(uniqueKey); + } + return immutableDictionary; + } + + [Benchmark] + public ImmutableSortedDictionary ImmutableSortedDictionary() + { + ImmutableSortedDictionary immutableSortedDictionary = ImmutableSortedDictionary.Empty; + foreach (T uniqueKey in _keys) + { + immutableSortedDictionary = immutableSortedDictionary.Add(uniqueKey, uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableSortedDictionary = immutableSortedDictionary.Remove(uniqueKey); + } + return immutableSortedDictionary; + } + + [Benchmark] + public ImmutableStack ImmutableStack() + { + ImmutableStack immutableStack = ImmutableStack.Empty; + foreach (T uniqueKey in _keys) + { + immutableStack = immutableStack.Push(uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableStack = immutableStack.Pop(); + } + return immutableStack; + } + + [Benchmark] + public ImmutableQueue ImmutableQueue() + { + ImmutableQueue immutableQueue = ImmutableQueue.Empty; + foreach (T uniqueKey in _keys) + { + immutableQueue = immutableQueue.Enqueue(uniqueKey); + } + foreach (T uniqueKey in _keys) + { + immutableQueue = immutableQueue.Dequeue(); + } + return immutableQueue; + } } } \ No newline at end of file