summaryrefslogtreecommitdiff
path: root/tests/src/performance/perflab/LowLevelPerf.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/performance/perflab/LowLevelPerf.cs')
-rw-r--r--tests/src/performance/perflab/LowLevelPerf.cs1283
1 files changed, 643 insertions, 640 deletions
diff --git a/tests/src/performance/perflab/LowLevelPerf.cs b/tests/src/performance/perflab/LowLevelPerf.cs
index 30c6734d45..a1f1a40c21 100644
--- a/tests/src/performance/perflab/LowLevelPerf.cs
+++ b/tests/src/performance/perflab/LowLevelPerf.cs
@@ -7,796 +7,799 @@ using System.Collections.Generic;
using System.Threading;
using System.Runtime.CompilerServices;
-public class LowLevelPerf
+namespace PerfLabTests
{
- [Benchmark(InnerIterationCount=100000)]
- public static void EmptyStaticFunction()
+ public class LowLevelPerf
{
- foreach (var iteration in Benchmark.Iterations)
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void EmptyStaticFunction()
{
- using (iteration.StartMeasurement())
+ foreach (var iteration in Benchmark.Iterations)
{
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ using (iteration.StartMeasurement())
{
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
- Class.EmptyStaticFunction();
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ {
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ Class.EmptyStaticFunction();
+ }
}
}
}
- }
- [Benchmark(InnerIterationCount=100000)]
- public static void EmptyStaticFunction5Arg()
- {
- foreach (var iteration in Benchmark.Iterations)
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void EmptyStaticFunction5Arg()
{
- using (iteration.StartMeasurement())
+ foreach (var iteration in Benchmark.Iterations)
{
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ using (iteration.StartMeasurement())
{
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
- Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ {
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ Class.EmptyStaticFunction5Arg(1, 2, 3, 4, 5);
+ }
}
}
}
- }
-
- [Benchmark(InnerIterationCount=100000)]
- public static void EmptyInstanceFunction()
- {
- Class aClass = new Class();
- foreach (var iteration in Benchmark.Iterations)
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void EmptyInstanceFunction()
{
- using (iteration.StartMeasurement())
+ Class aClass = new Class();
+
+ foreach (var iteration in Benchmark.Iterations)
{
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ using (iteration.StartMeasurement())
{
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
- aClass.EmptyInstanceFunction();
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ {
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ aClass.EmptyInstanceFunction();
+ }
}
}
}
- }
- [Benchmark(InnerIterationCount=100000)]
- public static void InterfaceInterfaceMethod()
- {
- AnInterface aInterface = new Class();
-
- foreach (var iteration in Benchmark.Iterations)
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void InterfaceInterfaceMethod()
{
- using (iteration.StartMeasurement())
+ AnInterface aInterface = new Class();
+
+ foreach (var iteration in Benchmark.Iterations)
{
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ using (iteration.StartMeasurement())
{
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface);
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ {
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface);
+ }
}
}
}
- }
- [MethodImpl(MethodImplOptions.NoInlining)]
- private static void CallInterfaceMethod(AnInterface aInterface)
- {
- aInterface.InterfaceMethod();
- }
-
- [Benchmark(InnerIterationCount=100000)]
- public static void InterfaceInterfaceMethodLongHierarchy()
- {
- AnInterface aInterface = new LongHierarchyChildClass();
-
- //generate all the not-used call site first
- CallInterfaceMethod(new LongHierarchyClass1());
- CallInterfaceMethod(new LongHierarchyClass2());
- CallInterfaceMethod(new LongHierarchyClass3());
- CallInterfaceMethod(new LongHierarchyClass4());
- CallInterfaceMethod(new LongHierarchyClass5());
- CallInterfaceMethod(new LongHierarchyClass6());
- CallInterfaceMethod(new LongHierarchyClass7());
- CallInterfaceMethod(new LongHierarchyClass8());
- CallInterfaceMethod(new LongHierarchyClass9());
- CallInterfaceMethod(new LongHierarchyClass11());
- CallInterfaceMethod(new LongHierarchyClass12());
-
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- CallInterfaceMethod(aInterface);
- }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static void CallInterfaceMethod(AnInterface aInterface)
+ {
+ aInterface.InterfaceMethod();
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void InterfaceInterfaceMethodSwitchCallType()
- {
- AnInterface aInterface = new LongHierarchyChildClass();
- AnInterface aInterface1 = new LongHierarchyClass1();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void InterfaceInterfaceMethodLongHierarchy()
+ {
+ AnInterface aInterface = new LongHierarchyChildClass();
+
+ //generate all the not-used call site first
+ CallInterfaceMethod(new LongHierarchyClass1());
+ CallInterfaceMethod(new LongHierarchyClass2());
+ CallInterfaceMethod(new LongHierarchyClass3());
+ CallInterfaceMethod(new LongHierarchyClass4());
+ CallInterfaceMethod(new LongHierarchyClass5());
+ CallInterfaceMethod(new LongHierarchyClass6());
+ CallInterfaceMethod(new LongHierarchyClass7());
+ CallInterfaceMethod(new LongHierarchyClass8());
+ CallInterfaceMethod(new LongHierarchyClass9());
+ CallInterfaceMethod(new LongHierarchyClass11());
+ CallInterfaceMethod(new LongHierarchyClass12());
+
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ CallInterfaceMethod(aInterface);
+ }
- foreach (var iteration in Benchmark.Iterations)
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void InterfaceInterfaceMethodSwitchCallType()
{
- using (iteration.StartMeasurement())
+ AnInterface aInterface = new LongHierarchyChildClass();
+ AnInterface aInterface1 = new LongHierarchyClass1();
+
+ foreach (var iteration in Benchmark.Iterations)
{
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ using (iteration.StartMeasurement())
{
- CallInterfaceMethod(aInterface);
- CallInterfaceMethod(aInterface1);
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ {
+ CallInterfaceMethod(aInterface);
+ CallInterfaceMethod(aInterface1);
+ }
}
}
}
- }
- [Benchmark(InnerIterationCount=100000)]
- public static int ClassVirtualMethod()
- {
- SuperClass aClass = new Class();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static int ClassVirtualMethod()
+ {
+ SuperClass aClass = new Class();
- int x = 0;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- x = aClass.VirtualMethod();
+ int x = 0;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ x = aClass.VirtualMethod();
- return x;
- }
+ return x;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void SealedClassInterfaceMethod()
- {
- SealedClass aSealedClass = new SealedClass();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void SealedClassInterfaceMethod()
+ {
+ SealedClass aSealedClass = new SealedClass();
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aSealedClass.InterfaceMethod();
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aSealedClass.InterfaceMethod();
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void StructWithInterfaceInterfaceMethod()
- {
- StructWithInterface aStructWithInterface = new StructWithInterface();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void StructWithInterfaceInterfaceMethod()
+ {
+ StructWithInterface aStructWithInterface = new StructWithInterface();
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aStructWithInterface.InterfaceMethod();
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aStructWithInterface.InterfaceMethod();
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void StaticIntPlus()
- {
- Class aClass = new Class();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void StaticIntPlus()
+ {
+ Class aClass = new Class();
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- Class.aStaticInt += 1;
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ Class.aStaticInt += 1;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static bool ObjectStringIsString()
- {
- object aObjectString = "aString1";
- bool b = false;
+ [Benchmark(InnerIterationCount = 100000)]
+ public static bool ObjectStringIsString()
+ {
+ object aObjectString = "aString1";
+ bool b = false;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- b = aObjectString is String;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ b = aObjectString is String;
- return b;
- }
+ return b;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void NewDelegateClassEmptyInstanceFn()
- {
- Class aClass = new Class();
- MyDelegate aMyDelegate;
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void NewDelegateClassEmptyInstanceFn()
+ {
+ Class aClass = new Class();
+ MyDelegate aMyDelegate;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aMyDelegate = new MyDelegate(aClass.EmptyInstanceFunction);
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aMyDelegate = new MyDelegate(aClass.EmptyInstanceFunction);
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void NewDelegateClassEmptyStaticFn()
- {
- Class aClass = new Class();
- MyDelegate aMyDelegate;
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void NewDelegateClassEmptyStaticFn()
+ {
+ Class aClass = new Class();
+ MyDelegate aMyDelegate;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aMyDelegate = new MyDelegate(Class.EmptyStaticFunction);
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aMyDelegate = new MyDelegate(Class.EmptyStaticFunction);
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void InstanceDelegate()
- {
- Class aClass = new Class();
- MyDelegate aInstanceDelegate = new MyDelegate(aClass.EmptyInstanceFunction);
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void InstanceDelegate()
+ {
+ Class aClass = new Class();
+ MyDelegate aInstanceDelegate = new MyDelegate(aClass.EmptyInstanceFunction);
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aInstanceDelegate();
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aInstanceDelegate();
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void StaticDelegate()
- {
- Class aClass = new Class();
- MyDelegate aStaticDelegate = new MyDelegate(Class.EmptyStaticFunction);
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void StaticDelegate()
+ {
+ Class aClass = new Class();
+ MyDelegate aStaticDelegate = new MyDelegate(Class.EmptyStaticFunction);
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aStaticDelegate();
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aStaticDelegate();
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void MeasureEvents()
- {
- Class aClass = new Class();
- aClass.AnEvent += new MyDelegate(aClass.EmptyInstanceFunction);
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void MeasureEvents()
+ {
+ Class aClass = new Class();
+ aClass.AnEvent += new MyDelegate(aClass.EmptyInstanceFunction);
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aClass.MeasureFire100();
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aClass.MeasureFire100();
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void GenericClassWithIntGenericInstanceField()
- {
- GenericClass<int> aGenericClassWithInt = new GenericClass<int>();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void GenericClassWithIntGenericInstanceField()
+ {
+ GenericClass<int> aGenericClassWithInt = new GenericClass<int>();
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aGenericClassWithInt.aGenericInstanceFieldT = 1;
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aGenericClassWithInt.aGenericInstanceFieldT = 1;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void GenericClassGenericStaticField()
- {
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- GenericClass<int>.aGenericStaticFieldT = 1;
- }
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void GenericClassGenericStaticField()
+ {
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ GenericClass<int>.aGenericStaticFieldT = 1;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static int GenericClassGenericInstanceMethod()
- {
- GenericClass<int> aGenericClassWithInt = new GenericClass<int>();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static int GenericClassGenericInstanceMethod()
+ {
+ GenericClass<int> aGenericClassWithInt = new GenericClass<int>();
- int x = 0;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- x = aGenericClassWithInt.ClassGenericInstanceMethod();
+ int x = 0;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ x = aGenericClassWithInt.ClassGenericInstanceMethod();
- return x;
- }
+ return x;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static int GenericClassGenericStaticMethod()
- {
- int x = 0;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- x = GenericClass<int>.ClassGenericStaticMethod();
+ [Benchmark(InnerIterationCount = 100000)]
+ public static int GenericClassGenericStaticMethod()
+ {
+ int x = 0;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ x = GenericClass<int>.ClassGenericStaticMethod();
- return x;
- }
+ return x;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static int GenericGenericMethod()
- {
- // Warmup
- int x = 0;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- x = Class.GenericMethod<int>();
-
- return x;
- }
+ [Benchmark(InnerIterationCount = 100000)]
+ public static int GenericGenericMethod()
+ {
+ // Warmup
+ int x = 0;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ x = Class.GenericMethod<int>();
+
+ return x;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static void GenericClassWithSTringGenericInstanceMethod()
- {
- GenericClass<string> aGenericClassWithString = new GenericClass<string>();
- string aString = "foo";
+ [Benchmark(InnerIterationCount = 100000)]
+ public static void GenericClassWithSTringGenericInstanceMethod()
+ {
+ GenericClass<string> aGenericClassWithString = new GenericClass<string>();
+ string aString = "foo";
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- aGenericClassWithString.aGenericInstanceFieldT = aString;
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ aGenericClassWithString.aGenericInstanceFieldT = aString;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static int ForeachOverList100Elements()
- {
- List<int> iList = new List<int>();
- for (int i = 0; i < 100; i++)
- iList.Add(i);
-
- int iResult = 0;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- foreach (int j in iList)
- iResult = j;
-
- return iResult;
- }
+ [Benchmark(InnerIterationCount = 100000)]
+ public static int ForeachOverList100Elements()
+ {
+ List<int> iList = new List<int>();
+ for (int i = 0; i < 100; i++)
+ iList.Add(i);
+
+ int iResult = 0;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ foreach (int j in iList)
+ iResult = j;
+
+ return iResult;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static Type TypeReflectionObjectGetType()
- {
- Type type = null;
- object anObject = "aString";
+ [Benchmark(InnerIterationCount = 100000)]
+ public static Type TypeReflectionObjectGetType()
+ {
+ Type type = null;
+ object anObject = "aString";
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- type = anObject.GetType();
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ type = anObject.GetType();
- return type;
- }
+ return type;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static Type TypeReflectionArrayGetType()
- {
- Type type = null;
- object anArray = new string[0];
+ [Benchmark(InnerIterationCount = 100000)]
+ public static Type TypeReflectionArrayGetType()
+ {
+ Type type = null;
+ object anArray = new string[0];
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- type = anArray.GetType();
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ type = anArray.GetType();
- return type;
- }
+ return type;
+ }
- [Benchmark(InnerIterationCount=100000)]
- public static string IntegerFormatting()
- {
- int number = Int32.MaxValue;
+ [Benchmark(InnerIterationCount = 100000)]
+ public static string IntegerFormatting()
+ {
+ int number = Int32.MaxValue;
- string result = null;
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- result = number.ToString();
+ string result = null;
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ result = number.ToString();
- return result;
+ return result;
+ }
}
-}
-#region Support Classes
-// classes and method needed to perform the experiments.
+ #region Support Classes
+ // classes and method needed to perform the experiments.
-public interface AnInterface
-{
- int InterfaceMethod();
-}
-
-public class SuperClass : AnInterface
-{
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public virtual int InterfaceMethod() { return 2; }
-
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public virtual int VirtualMethod()
+ public interface AnInterface
{
- return 1;
+ int InterfaceMethod();
}
-}
-public struct ValueType
-{
- public int x;
- public int y;
- public int z;
-}
+ public class SuperClass : AnInterface
+ {
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public virtual int InterfaceMethod() { return 2; }
-public delegate int MyDelegate();
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public virtual int VirtualMethod()
+ {
+ return 1;
+ }
+ }
-public struct StructWithInterface : AnInterface
-{
- public int x;
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public int InterfaceMethod()
+ public struct ValueType
{
- return x++;
+ public int x;
+ public int y;
+ public int z;
}
-}
-public sealed class SealedClass : SuperClass
-{
- public int aInstanceInt;
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public delegate int MyDelegate();
+
+ public struct StructWithInterface : AnInterface
{
- return aInstanceInt++;
+ public int x;
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public int InterfaceMethod()
+ {
+ return x++;
+ }
}
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public override int InterfaceMethod()
+
+ public sealed class SealedClass : SuperClass
{
- return aInstanceInt++;
+ public int aInstanceInt;
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return aInstanceInt++;
+ }
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod()
+ {
+ return aInstanceInt++;
+ }
}
-}
-/// <summary>
-/// A example class. It inherits, overrides, has intefaces etc.
-/// It excercises most of the common runtime features
-/// </summary>
-public class Class : SuperClass
-{
- public event MyDelegate AnEvent;
+ /// <summary>
+ /// A example class. It inherits, overrides, has intefaces etc.
+ /// It excercises most of the common runtime features
+ /// </summary>
+ public class Class : SuperClass
+ {
+ public event MyDelegate AnEvent;
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public override int VirtualMethod() { return aInstanceInt++; }
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public override int VirtualMethod() { return aInstanceInt++; }
- [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return aInstanceInt++; }
+ [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return aInstanceInt++; }
- public int aInstanceInt;
- public string aInstanceString;
+ public int aInstanceInt;
+ public string aInstanceString;
- public static int aStaticInt;
- public static string aStaticString = "Hello";
- public static ValueType aStaticValueType;
+ public static int aStaticInt;
+ public static string aStaticString = "Hello";
+ public static ValueType aStaticValueType;
- [MethodImpl(MethodImplOptions.NoInlining)]
- public static int EmptyStaticFunction()
- {
- return aStaticInt++;
- }
-
- [MethodImpl(MethodImplOptions.NoInlining)]
- public static int EmptyStaticFunction5Arg(int arg1, int arg2, int arg3, int arg4, int arg5)
- {
- return aStaticInt++;
- }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public static int EmptyStaticFunction()
+ {
+ return aStaticInt++;
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public int EmptyInstanceFunction()
- {
- return aInstanceInt++;
- }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public static int EmptyStaticFunction5Arg(int arg1, int arg2, int arg3, int arg4, int arg5)
+ {
+ return aStaticInt++;
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public static int GenericMethod<T>()
- {
- return aStaticInt++;
- }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public int EmptyInstanceFunction()
+ {
+ return aInstanceInt++;
+ }
- public void MeasureFire100()
- {
- #region callAnEvent
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- AnEvent();
- //});
- #endregion
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public static int GenericMethod<T>()
+ {
+ return aStaticInt++;
+ }
-public class GenericClass<T>
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public T ClassGenericInstanceMethod()
- {
- tmp++; // need this to not be optimized away
- return aGenericInstanceFieldT;
+ public void MeasureFire100()
+ {
+ #region callAnEvent
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ AnEvent();
+ //});
+ #endregion
+ }
}
- [MethodImpl(MethodImplOptions.NoInlining)]
- public static T ClassGenericStaticMethod()
+ public class GenericClass<T>
{
- sTmp++; // need this to not be optimized away
- return aGenericStaticFieldT;
- }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public T ClassGenericInstanceMethod()
+ {
+ tmp++; // need this to not be optimized away
+ return aGenericInstanceFieldT;
+ }
- public static int sTmp;
- public int tmp;
- public T aGenericInstanceFieldT;
- public static T aGenericStaticFieldT;
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public static T ClassGenericStaticMethod()
+ {
+ sTmp++; // need this to not be optimized away
+ return aGenericStaticFieldT;
+ }
-#region LongHierarchyClass
-public class LongHierarchyClass1 : AnInterface
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public virtual int InterfaceMethod() { return 2; }
+ public static int sTmp;
+ public int tmp;
+ public T aGenericInstanceFieldT;
+ public static T aGenericStaticFieldT;
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public virtual int VirtualMethod()
+ #region LongHierarchyClass
+ public class LongHierarchyClass1 : AnInterface
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public virtual int InterfaceMethod() { return 2; }
-public class LongHierarchyClass2 : LongHierarchyClass1
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public virtual int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass2 : LongHierarchyClass1
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass3 : LongHierarchyClass2
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass3 : LongHierarchyClass2
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass4 : LongHierarchyClass3
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass4 : LongHierarchyClass3
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass5 : LongHierarchyClass4
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass5 : LongHierarchyClass4
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass6 : LongHierarchyClass5
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass6 : LongHierarchyClass5
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass7 : LongHierarchyClass6
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass7 : LongHierarchyClass6
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass8 : LongHierarchyClass7
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass8 : LongHierarchyClass7
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass9 : LongHierarchyClass8
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass9 : LongHierarchyClass8
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass10 : LongHierarchyClass9
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass10 : LongHierarchyClass9
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass11 : LongHierarchyClass10
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass11 : LongHierarchyClass10
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyClass12 : LongHierarchyClass11
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyClass12 : LongHierarchyClass11
{
- return 1;
- }
-}
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
-public class LongHierarchyChildClass : LongHierarchyClass12
-{
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int InterfaceMethod() { return 2; }
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
+ }
- [MethodImpl(MethodImplOptions.NoInlining)]
- public override int VirtualMethod()
+ public class LongHierarchyChildClass : LongHierarchyClass12
{
- return 1;
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int InterfaceMethod() { return 2; }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ public override int VirtualMethod()
+ {
+ return 1;
+ }
}
-}
-#endregion
+ #endregion
-#endregion
+ #endregion
+}