Submatch has been sped up by implementing a modified Boyer–Moore–Horspool algorithm with an average-case complexity of O(N) on random text. Worst case, it behaves similarly to the previous implementation O(MN), where M is the length of the boundary and N is the length of the buffer to operate on. Method SubMatch looks for two things: 1. Whether the byte array segment fully contains the boundary, or 2. Whether the byte array ends with the start of the boundary. Case 1 is now a lot faster than the previous implementation. Case 2 remains using the same code as before. The method will do Case 1 until the matchOffset is equal to N-M. It then switches to Case 2, unless a match is found. The code can be further sped up with a full Boyer–Moore implementation, or something more sophisticated. This however can be evaluated in the case that this implementation is insufficiently performant for our main scenarios. This commit resolves issue #575. |
||
|---|---|---|
| .. | ||
| HttpRequestStreamReaderTest.cs | ||
| HttpResponseStreamWriterTest.cs | ||
| Microsoft.AspNetCore.WebUtilities.Tests.xproj | ||
| MultipartReaderTests.cs | ||
| QueryHelpersTests.cs | ||
| WebEncodersTests.cs | ||
| project.json | ||