/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { #region Exercise 1 Reverse string and solution comparison var maxLoop = 10000; var a = "anitalavalatina"; //Extension method ReverseStringBuilder var ex1Test1 = new Stopwatch(); ex1Test1.Start(); for (int i = 0; i < maxLoop; ++i) { a.ReverseStringBuilder(); } ex1Test1.Stop(); //Extension method ReverseStringArray var ex1Test2 = new Stopwatch(); ex1Test2.Start(); for (int i = 0; i < maxLoop; ++i) { a.ReverseStringArray(); } ex1Test2.Stop(); //Extension method ReverseStringDirectArray var ex1Test3 = new Stopwatch(); ex1Test3.Start(); for (int i = 0; i < maxLoop; ++i) { a.ReverseStringDirectArray(); } ex1Test3.Stop(); //Built-in linq var ex1Test4 = new Stopwatch(); ex1Test4.Start(); for (int i = 0; i < maxLoop; ++i) { a.Reverse().ToString(); } ex1Test4.Stop(); Console.WriteLine("EXCERCISE 1 Reverse string method comparison TESTS {0} executions", maxLoop); Console.WriteLine("String:{0}, Reverse:{1}", a, a.Reverse().ToString()); Console.WriteLine("Extension method ReverseStringBuilder: {0}", ex1Test1.Elapsed.TotalMilliseconds.ToString("G0")); Console.WriteLine("Extension method ReverseStringArray: {0}", ex1Test2.Elapsed.TotalMilliseconds.ToString("G0")); Console.WriteLine("Extension method ReverseStringDirectArray: {0}", ex1Test3.Elapsed.TotalMilliseconds.ToString("G0")); Console.WriteLine("Linq Build-in: {0}", ex1Test4.Elapsed.TotalMilliseconds.ToString("G0")); Console.WriteLine(); #endregion #region Exercise 2 Fibonacci Console.WriteLine("EXCERCISE 2 Fibonacci functionality"); Fibonacci fibo = new Fibonacci(); long fTest1 = 4; long fTest2 = 9; Console.WriteLine("f({0}) = {1}", fTest1, fibo.GetFibonacci(fTest1)); Console.WriteLine("f({0}) = {1}", fTest2, fibo.GetFibonacci(fTest2)); #endregion #region Exercise 3 //The common way Console.WriteLine("EXCERCISE 3 table multiplication"); Console.WriteLine("--------The common way -------------"); var TableNumber = 12; var MaxTimes = 12; var ex3Test1 = new Stopwatch(); ex3Test1.Start(); for (int times = 1; times <= MaxTimes; ++times) { Console.WriteLine("{0} X {1} = {2}", TableNumber, times, TableNumber * times); } ex3Test1.Stop(); Console.WriteLine(); Console.WriteLine("-----------Kind of Dynamic way using interfaces and separation of concerns---------"); var ex3Test2 = new Stopwatch(); ex3Test2.Start(); var generator = new MultiplicationTableGenerator(); var rawTable = generator.GetTable(TableNumber, MaxTimes); var printer = new ConsoleStream(); printer.Print(rawTable); ex3Test2.Stop(); Console.WriteLine("Ex1: {0}", ex3Test1.Elapsed.TotalMilliseconds.ToString("G0")); Console.WriteLine("Ex2: {0}", ex3Test2.Elapsed.TotalMilliseconds.ToString("G0")); Console.ReadLine(); #endregion }
public void SetUp() { tableGenerator = new MultiplicationTableGenerator(); tableResultComparer = new MultiplicationTableResultComparer(); tableCollectionResultComparer = new MultiplicationTableResultEnumerableComparer(tableResultComparer); }