Skip to content

Commit

Permalink
Merge pull request #1131 from alistairjevans/success-request-perf
Browse files Browse the repository at this point in the history
Success Request List Performance Improvement
  • Loading branch information
tillig committed May 28, 2020
2 parents 1b210d7 + 418e187 commit ef048bc
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/Autofac/Core/Resolving/ResolveOperationBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,12 @@ namespace Autofac.Core.Resolving
/// </summary>
public abstract class ResolveOperationBase : IResolveOperation, ITracingIdentifer
{
private const int SuccessListInitialCapacity = 32;

private bool _ended;
private IResolvePipelineTracer? _pipelineTracer;
private List<ResolveRequestContext> _successfulRequests = new List<ResolveRequestContext>();
private List<ResolveRequestContext> _successfulRequests = new List<ResolveRequestContext>(SuccessListInitialCapacity);
private int _nextCompleteSuccessfulRequestStartPos = 0;

/// <summary>
/// Initializes a new instance of the <see cref="ResolveOperationBase"/> class.
Expand Down Expand Up @@ -241,17 +244,18 @@ private void CompleteRequests()
{
var completed = _successfulRequests;
int count = completed.Count;
var startPosition = _nextCompleteSuccessfulRequestStartPos;
ResetSuccessfulRequests();

for (int i = 0; i < count; i++)
for (int i = startPosition; i < count; i++)
{
completed[i].Complete();
}
}

private void ResetSuccessfulRequests()
{
_successfulRequests = new List<ResolveRequestContext>();
_nextCompleteSuccessfulRequestStartPos = _successfulRequests.Count;
}

private void End(Exception? exception = null)
Expand Down

0 comments on commit ef048bc

Please sign in to comment.