Skip to content

Commit 4ab100e

Browse files
authored
Reduce allocations in ResolverMetadataClient.ProcessPackageVersion by avoiding JArray enumerator allocations (#7089)
1 parent aa1b984 commit 4ab100e

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

src/NuGet.Core/NuGet.Protocol/DependencyInfo/ResolverMetadataClient.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ private static RemoteSourceDependencyInfo ProcessPackageVersion(JObject packageO
8080

8181
if (dependencyGroupsArray != null)
8282
{
83-
foreach (JObject dependencyGroupObj in dependencyGroupsArray)
83+
for (int i = 0; i < dependencyGroupsArray.Count; i++)
8484
{
85+
var dependencyGroupObj = (JObject)dependencyGroupsArray[i];
8586
var currentFramework = GetFramework(dependencyGroupObj);
8687

8788
var groupDependencies = new List<PackageDependency>();
@@ -91,8 +92,10 @@ private static RemoteSourceDependencyInfo ProcessPackageVersion(JObject packageO
9192
// Packages with no dependencies have 'dependencyGroups' but no 'dependencies'
9293
if (dependencyGroupObj.TryGetValue("dependencies", out dependenciesObj))
9394
{
94-
foreach (JObject dependencyObj in dependenciesObj)
95+
var dependencies = (JArray)dependenciesObj;
96+
for (int j = 0; j < dependencies.Count; j++)
9597
{
98+
var dependencyObj = (JObject)dependencies[j];
9699
var dependencyId = dependencyObj.Value<string>("id");
97100
var dependencyRange = RegistrationUtility.CreateVersionRange(dependencyObj.Value<string>("range"));
98101

0 commit comments

Comments
 (0)