public static void Init() { etComparer = EnumComparer.For <DayOfWeek>(); lcgComparer = LCG.EnumComparer.For <DayOfWeek>(); lcg2Comparer = LCG.EnumComparer2 <DayOfWeek> .Instance; handWrittenComparer = new DayOfWeekComparer(); lcgDict = new Dictionary <DayOfWeek, int>(MAX_DAY_OF_WEEK, lcgComparer); lcg2Dict = new Dictionary <DayOfWeek, int>(MAX_DAY_OF_WEEK, lcg2Comparer); etDict = new Dictionary <DayOfWeek, int>(MAX_DAY_OF_WEEK, etComparer); handDict = new Dictionary <DayOfWeek, int>(MAX_DAY_OF_WEEK, handWrittenComparer); defaultDict = new Dictionary <DayOfWeek, int>(MAX_DAY_OF_WEEK); intDict = new Dictionary <int, int>(MAX_DAY_OF_WEEK); }
public static void Main(string[] args) { try { iterations = int.Parse(args[0]); } catch { } Random rng = new Random(); //goto ints; var dayOfWeekList = new List <DayOfWeek>(iterations); for (int i = 0; i < iterations; i++) { dayOfWeekList.Add((DayOfWeek)(rng.Next() % MAX_DAY_OF_WEEK)); } var dayOfWeekArray = dayOfWeekList.ToArray(); var buildComparerSuite = TestSuite.Create("build comparer", 0, 0) .Add(input => { //lcgComparer = LCG.EnumComparer.For<DayOfWeek>(); lcgComparer = new LCG.EnumComparer <DayOfWeek>(); return(0); }, "LCG EnumComparer") .Add(input => { //etComparer = EnumComparer.For<DayOfWeek>(); etComparer = new EnumComparer <DayOfWeek>(); return(0); }, "Expression Tree EnumComparer") .Add(input => { handWrittenComparer = new DayOfWeekComparer(); return(0); }, "Hand-Written EnumComparer") /*.RunTests()*/; Init(); var addToDictSuite = TestSuite.Create("add to dict", dayOfWeekArray, 0) .Add(input => { for (int i = 0; i < input.Length; i++) { var dayOfWeek = input[i]; lcgDict[dayOfWeek] = i; } return(0); }, "LCG EnumComparer") .Add(input => { for (int i = 0; i < input.Length; i++) { var dayOfWeek = input[i]; lcg2Dict[dayOfWeek] = i; } return(0); }, "LCG2 EnumComparer") .Add(input => { for (int i = 0; i < input.Length; i++) { var dayOfWeek = input[i]; etDict[dayOfWeek] = i; } return(0); }, "Expression Tree EnumComparer") .Add(input => { for (int i = 0; i < input.Length; i++) { var dayOfWeek = input[i]; handDict[dayOfWeek] = i; } return(0); }, "Hand-Written EnumComparer") .Add(input => { for (int i = 0; i < input.Length; i++) { var dayOfWeek = input[i]; defaultDict[dayOfWeek] = i; } return(0); }, "Default Comparer") .Add(input => { for (int i = 0; i < input.Length; i++) { int dayOfWeek = (int)input[i]; intDict[dayOfWeek] = i; } return(0); }, "Int Dictionary") .RunTests(); var best = BenchmarkResult.FindBest(/*buildComparerSuite, */ addToDictSuite); /* * Console.WriteLine("-------------------- Build --------------------"); * buildComparerSuite.Display(ResultColumns.NameAndScore, best); * */ Console.WriteLine("-------------------- Add --------------------"); addToDictSuite.Display(ResultColumns.NameAndScore, best); }