move feature around

This commit is contained in:
Ryan Nowak 2018-06-06 21:46:21 -07:00
parent 72941a8f35
commit edf26be1bf
4 changed files with 29 additions and 14 deletions

View File

@ -15,6 +15,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
private Matcher _tree;
private int[] _samples;
private EndpointFeature _feature;
[GlobalSetup]
public void Setup()
@ -29,12 +30,14 @@ namespace Microsoft.AspNetCore.Routing.Matchers
_route = SetupMatcher(RouteMatcher.CreateBuilder());
_tree = SetupMatcher(TreeRouterMatcher.CreateBuilder());
_feature = new EndpointFeature();
}
[Benchmark(OperationsPerInvoke = SampleCount)]
public async Task LegacyRoute()
{
var feature = new EndpointFeature();
var feature = _feature;
for (var i = 0; i < SampleCount; i++)
{
var sample = _samples[i];
@ -47,7 +50,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark(OperationsPerInvoke = SampleCount)]
public async Task LegacyTreeRouter()
{
var feature = new EndpointFeature();
var feature = _feature;
for (var i = 0; i < SampleCount; i++)
{
var sample = _samples[i];

View File

@ -13,6 +13,8 @@ namespace Microsoft.AspNetCore.Routing.Matchers
private Matcher _route;
private Matcher _tree;
private EndpointFeature _feature;
[GlobalSetup]
public void Setup()
{
@ -22,12 +24,14 @@ namespace Microsoft.AspNetCore.Routing.Matchers
_route = SetupMatcher(RouteMatcher.CreateBuilder());
_tree = SetupMatcher(TreeRouterMatcher.CreateBuilder());
_feature = new EndpointFeature();
}
[Benchmark(OperationsPerInvoke = EndpointCount)]
public async Task LegacyRoute()
{
var feature = new EndpointFeature();
var feature = _feature;
for (var i = 0; i < EndpointCount; i++)
{
var httpContext = _requests[i];
@ -39,7 +43,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark(OperationsPerInvoke = EndpointCount)]
public async Task LegacyTreeRouter()
{
var feature = new EndpointFeature();
var feature = _feature;
for (var i = 0; i < EndpointCount; i++)
{
var httpContext = _requests[i];

View File

@ -15,6 +15,8 @@ namespace Microsoft.AspNetCore.Routing.Matchers
private Matcher _route;
private Matcher _tree;
private EndpointFeature _feature;
[GlobalSetup]
public void Setup()
{
@ -31,6 +33,8 @@ namespace Microsoft.AspNetCore.Routing.Matchers
_instruction = SetupMatcher(InstructionMatcher.CreateBuilder());
_route = SetupMatcher(RouteMatcher.CreateBuilder());
_tree = SetupMatcher(TreeRouterMatcher.CreateBuilder());
_feature = new EndpointFeature();
}
private Matcher SetupMatcher(MatcherBuilder builder)
@ -42,7 +46,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark(Baseline = true)]
public async Task Minimal()
{
var feature = new EndpointFeature();
var feature = _feature;
await _minimal.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -50,7 +54,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task Dfa()
{
var feature = new EndpointFeature();
var feature = _feature;
await _dfa.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -58,7 +62,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task Instruction()
{
var feature = new EndpointFeature();
var feature = _feature;
await _instruction.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -66,7 +70,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task LegacyRoute()
{
var feature = new EndpointFeature();
var feature = _feature;
await _route.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -74,7 +78,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task LegacyTreeRouter()
{
var feature = new EndpointFeature();
var feature = _feature;
await _tree.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}

View File

@ -15,6 +15,8 @@ namespace Microsoft.AspNetCore.Routing.Matchers
private Matcher _route;
private Matcher _tree;
private EndpointFeature _feature;
[GlobalSetup]
public void Setup()
{
@ -31,6 +33,8 @@ namespace Microsoft.AspNetCore.Routing.Matchers
_instruction = SetupMatcher(InstructionMatcher.CreateBuilder());
_route = SetupMatcher(RouteMatcher.CreateBuilder());
_tree = SetupMatcher(TreeRouterMatcher.CreateBuilder());
_feature = new EndpointFeature();
}
// For this case we're specifically targeting the last entry to hit 'worst case'
@ -53,7 +57,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark(Baseline = true)]
public async Task Minimal()
{
var feature = new EndpointFeature();
var feature = _feature;
await _minimal.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -61,7 +65,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task Dfa()
{
var feature = new EndpointFeature();
var feature = _feature;
await _dfa.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -69,7 +73,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task Instruction()
{
var feature = new EndpointFeature();
var feature = _feature;
await _instruction.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -77,7 +81,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task LegacyRoute()
{
var feature = new EndpointFeature();
var feature = _feature;
await _route.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}
@ -85,7 +89,7 @@ namespace Microsoft.AspNetCore.Routing.Matchers
[Benchmark]
public async Task LegacyTreeRouter()
{
var feature = new EndpointFeature();
var feature = _feature;
await _tree.MatchAsync(_requests[0], feature);
Validate(_requests[0], _endpoints[0], feature.Endpoint);
}