Skip to content

Instantly share code, notes, and snippets.

@HaloFour
Created February 12, 2015 02:56
Show Gist options
  • Save HaloFour/8710b9a2b0035c29b44c to your computer and use it in GitHub Desktop.
Save HaloFour/8710b9a2b0035c29b44c to your computer and use it in GitHub Desktop.
Covariant Override Test
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using N;
static class Program
{
static void Main()
{
const int COUNT = 100000000;
C3 c3 = new C3();
C2 c2 = c3;
C1 c1 = c3;
c1.M1();
c1.M2();
c1.M3();
c1.M4();
c2.M1();
c2.M2();
c2.M3();
c2.M4();
c3.M1();
c3.M2();
c3.M3();
c3.M4();
Process process = Process.GetCurrentProcess();
process.ProcessorAffinity = new IntPtr(1);
Thread.CurrentThread.Priority = ThreadPriority.Highest;
Stopwatch sw = new Stopwatch();
Console.Write("C1::M1: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
object result = c1.M1();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C1::M2: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
object result = c1.M2();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C1::M3: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
object result = c1.M3();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C1::M4: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
object result = c1.M4();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C2::M1: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
IConvertible result = c2.M1();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C2::M2: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
IEquatable<int> result = c2.M2();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C2::M3: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
IConvertible result = (IConvertible)c2.M3();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C2::M4: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
IEquatable<int> result = (IEquatable<int>)c2.M4();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C3::M1: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
string result = c3.M1();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C3::M2: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
int result = c3.M2();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C3::M3: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
string result = (string)c3.M3();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.Write("C3::M4: ");
sw.Restart();
for (int i = 0; i < COUNT; i++)
{
int result = (int)c3.M4();
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment