Skip to content

Commit e2088c2

Browse files
authored
Reduce Version allocations in dependency graph traversal (#6354)
1 parent 8c8e2df commit e2088c2

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

rewrite-gradle/src/main/java/org/openrewrite/gradle/marker/GradleDependencyConfiguration.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ public List<ResolvedDependency> getResolved() {
243243
if (resolved == null) {
244244
List<ResolvedDependency> newResolved = new ArrayList<>(getDirectResolved());
245245
Map<GroupArtifact, ResolvedDependency> alreadyResolved = new HashMap<>();
246-
Map<GroupArtifact, Version> versionCache = new HashMap<>();
246+
Map<String, Version> versionCache = new HashMap<>();
247247
resolveTransitiveDependencies(newResolved, alreadyResolved, versionCache);
248248
resolved = new ArrayList<>(alreadyResolved.values());
249249
}
@@ -392,7 +392,7 @@ void unsafeSetDirectResolved(List<ResolvedDependency> directResolved) {
392392
this.directResolved = directResolved;
393393
}
394394

395-
private static void resolveTransitiveDependencies(List<ResolvedDependency> resolved, Map<GroupArtifact, ResolvedDependency> alreadyResolved, Map<GroupArtifact, Version> versionCache) {
395+
private static void resolveTransitiveDependencies(List<ResolvedDependency> resolved, Map<GroupArtifact, ResolvedDependency> alreadyResolved, Map<String, Version> versionCache) {
396396
for (ResolvedDependency dependency : resolved) {
397397
GroupArtifact ga = dependency.getGav().asGroupArtifact();
398398
if (alreadyResolved.containsKey(ga)) {
@@ -401,13 +401,12 @@ private static void resolveTransitiveDependencies(List<ResolvedDependency> resol
401401
continue;
402402
}
403403

404-
Version newVersion = new Version(dependency.getVersion());
405-
Version presentVersion = versionCache.computeIfAbsent(ga, ignored -> new Version(alreadyPresent.getVersion()));
404+
Version newVersion = versionCache.computeIfAbsent(dependency.getVersion(), Version::new);
405+
Version presentVersion = versionCache.computeIfAbsent(alreadyPresent.getVersion(), Version::new);
406406
int compared = presentVersion.compareTo(newVersion);
407407
if (compared > 0 || (compared == 0 && alreadyPresent.getDependencies().size() == dependency.getDependencies().size())) {
408408
continue;
409409
}
410-
versionCache.replace(ga, newVersion);
411410
}
412411
alreadyResolved.put(ga, dependency);
413412
resolveTransitiveDependencies(dependency.getDependencies(), alreadyResolved, versionCache);

0 commit comments

Comments
 (0)