static bool RequestLineRb() { ReadOnlyBuffer buffer = new ReadOnlyBuffer(s_plaintextTechEmpowerRequestBytes, 0, s_plaintextTechEmpowerHeadersBytes.Length); var parser = new HttpParser(); var request = new Request(); Position consumed = default; Position read; bool success = true; foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < Benchmark.InnerIterationCount; i++) { success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); success = success && parser.ParseRequestLine(request, buffer, out consumed, out read); } } } return(success); }
static bool FullRequestRb() { ReadOnlyBuffer buffer = new ReadOnlyBuffer(s_plaintextTechEmpowerRequestBytes); var parser = new HttpParser(); var request = new Request(); int consumedBytes = 0; Position examined; Position consumed = buffer.Start; bool success = true; foreach (var iteration in Benchmark.Iterations) { using (iteration.StartMeasurement()) { for (int i = 0; i < Benchmark.InnerIterationCount; i++) { success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined); success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes); success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined); success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes); success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined); success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes); success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined); success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes); success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined); success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes); } } } return(success); }
public bool TryGet(ref Collections.Sequences.Position position, out ReadOnlyMemory <byte> item, bool advance = true) { var(data, index) = position.Get <object>(); var p = new Position(data, index); var result = _buffer.TryGet(ref p, out item); if (advance) { position = Collections.Sequences.Position.Create(p.Segment, p.Index); } return(result); }