move feature around
This commit is contained in:
parent
72941a8f35
commit
edf26be1bf
|
|
@ -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];
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue