Skip to content

Commit 63e910b

Browse files
AbstractRazorProjectInfoDriver: Use HashSet for unique items
Update AbstractRazorProjectInfoDriver to use a dedicated HashSet instance to compute the most recent unique items.
1 parent b88304c commit 63e910b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/AbstractRazorProjectInfoDriver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ private sealed record Remove(ProjectKey ProjectKey) : Work(ProjectKey);
2727

2828
private readonly CancellationTokenSource _disposeTokenSource;
2929
private readonly AsyncBatchingWorkQueue<Work> _workQueue;
30+
private readonly HashSet<Work> _workerSet;
3031
private readonly Dictionary<ProjectKey, RazorProjectInfo> _latestProjectInfoMap;
3132
private ImmutableArray<IRazorProjectInfoListener> _listeners;
3233
private readonly TaskCompletionSource<bool> _initializationTaskSource;
@@ -37,6 +38,7 @@ protected AbstractRazorProjectInfoDriver(ILoggerFactory loggerFactory, TimeSpan?
3738
{
3839
Logger = loggerFactory.GetOrCreateLogger(GetType());
3940

41+
_workerSet = new(Comparer.Instance);
4042
_disposeTokenSource = new();
4143
_workQueue = new AsyncBatchingWorkQueue<Work>(delay ?? DefaultDelay, ProcessBatchAsync, _disposeTokenSource.Token);
4244
_latestProjectInfoMap = [];
@@ -89,7 +91,9 @@ protected void StartInitialization()
8991

9092
private async ValueTask ProcessBatchAsync(ImmutableArray<Work> items, CancellationToken token)
9193
{
92-
foreach (var work in items.GetMostRecentUniqueItems(Comparer.Instance))
94+
_workerSet.Clear();
95+
96+
foreach (var work in items.GetMostRecentUniqueItems(_workerSet))
9397
{
9498
if (token.IsCancellationRequested)
9599
{

0 commit comments

Comments
 (0)