- Most of the shared code is in the HttpProtocol class (former Frame) - Virtual calls handle protocol-specific things - Move the ProcessRequestsAsync loop to HttpProtocol - Implement HTTP/1.x request processing in Http1Connection and HTTP/2 in Http2Stream, with Http1Connection<T> and Http2Stream<T> subclassing those classes in order to handle the generic HttpContext parameter - Split MessageBody into Http1MessageBody and Http2MessageBody, with MessageBody containing shared member variables and methods |
||
|---|---|---|
| .. | ||
| Mocks | ||
| configs | ||
| DotSegmentRemovalBenchmark.cs | ||
| ErrorUtilities.cs | ||
| Http1ConnectionParsingOverheadBenchmark.cs | ||
| Http1WritingBenchmark.cs | ||
| HttpParserBenchmark.cs | ||
| HttpProtocolFeatureCollection.cs | ||
| Kestrel.Performance.csproj | ||
| KnownStringsBenchmark.cs | ||
| PipeThroughputBenchmark.cs | ||
| Program.cs | ||
| README.md | ||
| RequestParsingBenchmark.cs | ||
| RequestParsingData.cs | ||
| ResponseHeaderCollectionBenchmark.cs | ||
| ResponseHeadersWritingBenchmark.cs | ||
| StringUtilitiesBenchmark.cs | ||
README.md
Compile the solution in Release mode (so Kestrel is available in release)
To run a specific benchmark add it as parameter
dotnet run -f netcoreapp2.0 -c Release RequestParsing
To run all use All as parameter
dotnet run -f netcoreapp2.0 -c Release All
Using no parameter will list all available benchmarks