static void Main(string[] args) { #region Setup InterfaceTesterImpl directInterfaceTester = new InterfaceTesterImpl(); IInterfaceTester indirectInterfaceTester = new InterfaceTesterImpl(); AbstractTesterImpl directAbstractTester = new AbstractTesterImpl(); AbstractTester indirectAbstractTester = new AbstractTesterImpl(); VirtualTester baseVirtualTester = new VirtualTester(); VirtualTesterImpl directVirtualTester = new VirtualTesterImpl(); VirtualTester indirectVirtualTester = new VirtualTesterImpl(); #endregion Console.WriteLine("Running tests, this may take a while..."); long concreteTime = TestConcrete(); #region Interface stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { directInterfaceTester.Method(); } long directInterfaceTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { indirectInterfaceTester.Method(); } long indirectInterfaceTime = stopwatch.ElapsedMilliseconds; #endregion #region Abstract stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { directAbstractTester.Method(); } long directAbstractTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { indirectAbstractTester.Method(); } long indirectAbstractTime = stopwatch.ElapsedMilliseconds; #endregion #region Virtual stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { baseVirtualTester.Method(); } long baseVirtualTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { baseVirtualTester.Method2(); } long baseVirtual2Time = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { directVirtualTester.Method(); } long directVirtualTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { directVirtualTester.Method2(); } long directVirtual2Time = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { indirectVirtualTester.Method(); } long indirectVirtualTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for (int i = 0; i < TestIterations; ++i) { indirectVirtualTester.Method2(); } long indirectVirtual2Time = stopwatch.ElapsedMilliseconds; #endregion #region Results Console.WriteLine($"Concrete tester took {concreteTime}ms"); Console.WriteLine(); Console.WriteLine($"Direct interface tester took {directInterfaceTime}ms"); Console.WriteLine($"Indirect interface tester took {indirectInterfaceTime}ms"); Console.WriteLine(); Console.WriteLine($"Direct abstract tester took {directAbstractTime}ms"); Console.WriteLine($"Indirect abstract tester took {indirectAbstractTime}ms"); Console.WriteLine(); Console.WriteLine($"Base virtual tester took {baseVirtualTime}ms"); Console.WriteLine($"Base virtual tester 2 took {baseVirtual2Time}ms"); Console.WriteLine($"Direct virtual tester took {directVirtualTime}ms"); Console.WriteLine($"Direct virtual tester 2 took {directVirtual2Time}ms"); Console.WriteLine($"Indirect virtual tester took {indirectVirtualTime}ms"); Console.WriteLine($"Indirect virtual tester 2 took {indirectVirtual2Time}ms"); }
static void Main(string[] args) { #region Setup InterfaceTesterImpl directInterfaceTester = new InterfaceTesterImpl(); IInterfaceTester indirectInterfaceTester = new InterfaceTesterImpl(); AbstractTesterImpl directAbstractTester = new AbstractTesterImpl(); AbstractTester indirectAbstractTester = new AbstractTesterImpl(); VirtualTester baseVirtualTester = new VirtualTester(); VirtualTesterImpl directVirtualTester = new VirtualTesterImpl(); VirtualTester indirectVirtualTester = new VirtualTesterImpl(); #endregion Console.WriteLine("Running tests, this may take a while..."); long concreteTime = TestConcrete(); #region Interface stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { directInterfaceTester.Method(); } long directInterfaceTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { indirectInterfaceTester.Method(); } long indirectInterfaceTime = stopwatch.ElapsedMilliseconds; #endregion #region Abstract stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { directAbstractTester.Method(); } long directAbstractTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { indirectAbstractTester.Method(); } long indirectAbstractTime = stopwatch.ElapsedMilliseconds; #endregion #region Virtual stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { baseVirtualTester.Method(); } long baseVirtualTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { baseVirtualTester.Method2(); } long baseVirtual2Time = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { directVirtualTester.Method(); } long directVirtualTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { directVirtualTester.Method2(); } long directVirtual2Time = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { indirectVirtualTester.Method(); } long indirectVirtualTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(int i=0; i<TestIterations; ++i) { indirectVirtualTester.Method2(); } long indirectVirtual2Time = stopwatch.ElapsedMilliseconds; #endregion #region Results Console.WriteLine($"Concrete tester took {concreteTime}ms"); Console.WriteLine(); Console.WriteLine($"Direct interface tester took {directInterfaceTime}ms"); Console.WriteLine($"Indirect interface tester took {indirectInterfaceTime}ms"); Console.WriteLine(); Console.WriteLine($"Direct abstract tester took {directAbstractTime}ms"); Console.WriteLine($"Indirect abstract tester took {indirectAbstractTime}ms"); Console.WriteLine(); Console.WriteLine($"Base virtual tester took {baseVirtualTime}ms"); Console.WriteLine($"Base virtual tester 2 took {baseVirtual2Time}ms"); Console.WriteLine($"Direct virtual tester took {directVirtualTime}ms"); Console.WriteLine($"Direct virtual tester 2 took {directVirtual2Time}ms"); Console.WriteLine($"Indirect virtual tester took {indirectVirtualTime}ms"); Console.WriteLine($"Indirect virtual tester 2 took {indirectVirtual2Time}ms"); }