using System.Collections.Generic;
using System.Diagnostics;
public class Result : IComparable<Result>
public string CollectionTypeAndAccess = "";
public long Duration = 0L;
public int CompareTo(Result r)
if (this.Duration < r.Duration) return -1;
else if (this.Duration == r.Duration)
public static Stopwatch timer = new Stopwatch();
public static List<Result> SortedResults = new();
public static void AddResult(string type) => SortedResults.Add(new Result()
CollectionTypeAndAccess = type,
Duration = timer.ElapsedTicks
static void Main(string[] args)
List<T> list = new List<T>();
HashSet<T> hashset = new HashSet<T>();
Dictionary<uint,T> dictionary = new();
for (int i = 0; i < times; ++i)
list.Add(new T((uint)i) );
hashset.Add(new T((uint)i) );
dictionary.Add((uint)i, new T((uint)i));
list_element = list[list.Count-2];
var hashSetToList = hashset.ToList();
hs_element = hashSetToList[hashSetToList.Count-2];
dict_element = dictionary.Values.ToList()[dictionary.Count - 2];
if (list.Contains(list_element))
Console.WriteLine("List_Contains:" +timer.ElapsedTicks.ToString() + " tix");
AddResult("List_contains");
if (hashset.Contains(hs_element))
Console.WriteLine("HashSet_Contains:" +timer.ElapsedTicks.ToString() + " tix");
AddResult("HashSet_contains");
if (dictionary.TryGetValue(99998, out T value))
Console.WriteLine("HashResult for Hash 99998 in Dictionary, ");
Console.WriteLine("Dictionary_TryGet Wert:" +timer.ElapsedTicks.ToString() + " tix");
AddResult("Dictionary_TryGet");
if (dictionary.ContainsKey(99998))
Console.WriteLine("Hash 99998 in Dictionary, ");
Console.WriteLine("Dictionary_ContainsKey Wert:" +timer.ElapsedTicks.ToString() + " tix");
AddResult("Dictionary_ContainsKey");
if (dictionary.ContainsValue(dict_element))
Console.WriteLine("HashResult for Hash 99998 in Dictionary, ");
Console.WriteLine("Dictionary_ContainsValue Wert:" +timer.ElapsedTicks.ToString() + " tix");
AddResult("Dictionary_ContainsValue");
var result = dictionary[99998];
if (result != null && result is T)
Console.WriteLine("HashResult for Hash 99998 in Dictionary, ");
Console.WriteLine("Dictionary[Hash] => HashResult Wert:" +timer.ElapsedTicks.ToString() + " tix");
AddResult("Dictionary[Key]");
Console.WriteLine("######");
Console.WriteLine("######");
foreach (var e in SortedResults) {
Console.WriteLine(String.Format($"{e.CollectionTypeAndAccess, 24}" + $" {e.Duration} ticks" )) ;