Skip to content

Instantly share code, notes, and snippets.

@benaadams
Created March 7, 2021 05:08
Show Gist options
  • Save benaadams/393ed95127b7349a1e833b6641800c57 to your computer and use it in GitHub Desktop.
Save benaadams/393ed95127b7349a1e833b6641800c57 to your computer and use it in GitHub Desktop.
using System.Collections.Generic;
using BenchmarkDotNet.Attributes;
public class P
{
static void Main(string[] args)
{
BenchmarkDotNet.Running.BenchmarkSwitcher.FromAssembly(typeof(P).Assembly).Run(args);
}
public static IEnumerable<object> TestData()
{
yield return new Interfaces1();
yield return new Interfaces6();
yield return new Interfaces16();
}
[Benchmark(Baseline = true)]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface1(object o) => o is Interface1;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface2(object o) => o is Interface2;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface3(object o) => o is Interface3;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface4(object o) => o is Interface4;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface5(object o) => o is Interface5;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface6(object o) => o is Interface6;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface7(object o) => o is Interface7;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface8(object o) => o is Interface8;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface9(object o) => o is Interface9;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface10(object o) => o is Interface10;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface11(object o) => o is Interface11;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface12(object o) => o is Interface12;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface13(object o) => o is Interface13;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface14(object o) => o is Interface14;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface15(object o) => o is Interface15;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsInterface16(object o) => o is Interface16;
[Benchmark()]
[ArgumentsSource(nameof(TestData))]
public bool IsNotImplemented(object o) => o is UnimplmentedInterface;
}
public class NoInterfaces { }
public class Interfaces1 : Interface1 { }
public class Interfaces2 : Interface1, Interface2 { }
public class Interfaces3 : Interface1, Interface2, Interface3 { }
public class Interfaces4 : Interface1, Interface2, Interface3, Interface4 { }
public class Interfaces5 : Interface1, Interface2, Interface3, Interface4, Interface5 { }
public class Interfaces6 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6 { }
public class Interfaces7 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7 { }
public class Interfaces8 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8 { }
public class Interfaces9 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9 { }
public class Interfaces10 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10 { }
public class Interfaces11 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10, Interface11 { }
public class Interfaces12 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10, Interface11, Interface12 { }
public class Interfaces13 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10, Interface11, Interface12, Interface13 { }
public class Interfaces14 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10, Interface11, Interface12, Interface13, Interface14 { }
public class Interfaces15 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10, Interface11, Interface12, Interface13, Interface14, Interface15 { }
public class Interfaces16 : Interface1, Interface2, Interface3, Interface4, Interface5, Interface6, Interface7, Interface8, Interface9, Interface10, Interface11, Interface12, Interface13, Interface14, Interface15, Interface16 { }
public interface Interface1 { }
public interface Interface2 { }
public interface Interface3 { }
public interface Interface4 { }
public interface Interface5 { }
public interface Interface6 { }
public interface Interface7 { }
public interface Interface8 { }
public interface Interface9 { }
public interface Interface10 { }
public interface Interface11 { }
public interface Interface12 { }
public interface Interface13 { }
public interface Interface14 { }
public interface Interface15 { }
public interface Interface16 { }
public interface UnimplmentedInterface { }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment