summaryrefslogtreecommitdiff
path: root/tests/src/performance/perflab/DelegatePerf.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/performance/perflab/DelegatePerf.cs')
-rw-r--r--tests/src/performance/perflab/DelegatePerf.cs144
1 files changed, 74 insertions, 70 deletions
diff --git a/tests/src/performance/perflab/DelegatePerf.cs b/tests/src/performance/perflab/DelegatePerf.cs
index abc311a445..61f12a2dff 100644
--- a/tests/src/performance/perflab/DelegatePerf.cs
+++ b/tests/src/performance/perflab/DelegatePerf.cs
@@ -5,92 +5,96 @@ using Microsoft.Xunit.Performance;
using System;
using Xunit;
-internal delegate long DelegateLong(Object obj, long x, long y);
-internal delegate void MultiDelegate(Object obj, long x, long y);
-
-internal delegate int SerializeDelegate();
-
-public class DelegatePerf
+namespace PerfLabTests
{
- [Benchmark(InnerIterationCount=200000)]
- public void DelegateInvoke()
- {
- DelegateLong dl = new DelegateLong(this.Invocable1);
- Object obj = new Object();
- long ret = dl(obj, 100, 100);
+ internal delegate long DelegateLong(Object obj, long x, long y);
+ internal delegate void MultiDelegate(Object obj, long x, long y);
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- ret = dl(obj, 100, 100);
- }
+ internal delegate int SerializeDelegate();
- [Benchmark(InnerIterationCount=1000)]
- public void MulticastDelegateCombineInvoke()
+ public class DelegatePerf
{
- MultiDelegate md = null;
- Object obj = new Object();
+ [Benchmark(InnerIterationCount = 200000)]
+ public void DelegateInvoke()
+ {
+ DelegateLong dl = new DelegateLong(this.Invocable1);
+ Object obj = new Object();
+
+ long ret = dl(obj, 100, 100);
- foreach (var iteration in Benchmark.Iterations)
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ ret = dl(obj, 100, 100);
+ }
+
+ [Benchmark(InnerIterationCount = 1000)]
+ public void MulticastDelegateCombineInvoke()
{
- MultiDelegate md1 = new MultiDelegate(this.Invocable2);
- MultiDelegate md2 = new MultiDelegate(this.Invocable2);
- MultiDelegate md3 = new MultiDelegate(this.Invocable2);
- MultiDelegate md4 = new MultiDelegate(this.Invocable2);
- MultiDelegate md5 = new MultiDelegate(this.Invocable2);
- MultiDelegate md6 = new MultiDelegate(this.Invocable2);
- MultiDelegate md7 = new MultiDelegate(this.Invocable2);
- MultiDelegate md8 = new MultiDelegate(this.Invocable2);
- MultiDelegate md9 = new MultiDelegate(this.Invocable2);
- MultiDelegate md10 = new MultiDelegate(this.Invocable2);
-
- using (iteration.StartMeasurement())
+ MultiDelegate md = null;
+ Object obj = new Object();
+
+ foreach (var iteration in Benchmark.Iterations)
{
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ MultiDelegate md1 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md2 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md3 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md4 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md5 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md6 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md7 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md8 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md9 = new MultiDelegate(this.Invocable2);
+ MultiDelegate md10 = new MultiDelegate(this.Invocable2);
+
+ using (iteration.StartMeasurement())
{
- md = (MultiDelegate)Delegate.Combine(md1, md);
- md = (MultiDelegate)Delegate.Combine(md2, md);
- md = (MultiDelegate)Delegate.Combine(md3, md);
- md = (MultiDelegate)Delegate.Combine(md4, md);
- md = (MultiDelegate)Delegate.Combine(md5, md);
- md = (MultiDelegate)Delegate.Combine(md6, md);
- md = (MultiDelegate)Delegate.Combine(md7, md);
- md = (MultiDelegate)Delegate.Combine(md8, md);
- md = (MultiDelegate)Delegate.Combine(md9, md);
- md = (MultiDelegate)Delegate.Combine(md10, md);
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ {
+ md = (MultiDelegate)Delegate.Combine(md1, md);
+ md = (MultiDelegate)Delegate.Combine(md2, md);
+ md = (MultiDelegate)Delegate.Combine(md3, md);
+ md = (MultiDelegate)Delegate.Combine(md4, md);
+ md = (MultiDelegate)Delegate.Combine(md5, md);
+ md = (MultiDelegate)Delegate.Combine(md6, md);
+ md = (MultiDelegate)Delegate.Combine(md7, md);
+ md = (MultiDelegate)Delegate.Combine(md8, md);
+ md = (MultiDelegate)Delegate.Combine(md9, md);
+ md = (MultiDelegate)Delegate.Combine(md10, md);
+ }
}
}
- }
- md(obj, 100, 100);
- }
+ md(obj, 100, 100);
+ }
- [Benchmark(InnerIterationCount=10000)]
- [InlineData(100)]
- [InlineData(1000)]
- public void MulticastDelegateInvoke(int length)
- {
- MultiDelegate md = null;
- Object obj = new Object();
+ [Benchmark(InnerIterationCount = 10000)]
+ [InlineData(100)]
+ [InlineData(1000)]
+ public void MulticastDelegateInvoke(int length)
+ {
+ MultiDelegate md = null;
+ Object obj = new Object();
- for (long i = 0; i < length; i++)
- md = (MultiDelegate)Delegate.Combine(new MultiDelegate(this.Invocable2), md);
+ for (long i = 0; i < length; i++)
+ md = (MultiDelegate)Delegate.Combine(new MultiDelegate(this.Invocable2), md);
- foreach (var iteration in Benchmark.Iterations)
- using (iteration.StartMeasurement())
- for (int i = 0; i < Benchmark.InnerIterationCount; i++)
- md(obj, 100, 100);
- }
+ foreach (var iteration in Benchmark.Iterations)
+ using (iteration.StartMeasurement())
+ for (int i = 0; i < Benchmark.InnerIterationCount; i++)
+ md(obj, 100, 100);
+ }
- internal virtual long Invocable1(Object obj, long x, long y)
- {
- long i = x + y;
- return x;
- }
+ internal virtual long Invocable1(Object obj, long x, long y)
+ {
+ long i = x + y;
+ return x;
+ }
- internal virtual void Invocable2(Object obj, long x, long y)
- {
- long i = x + y;
+ internal virtual void Invocable2(Object obj, long x, long y)
+ {
+ long i = x + y;
+ }
}
}