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

View File

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

View File

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

View File

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