[2.x] perf: Improve incremental test stamper

**Problem**
Incremental stamper is still causing perf issue.

**Solution**
This further avoids SHA-256 calls to calculate the stamp.
This commit is contained in:
Eugene Yokota 2026-05-22 01:29:27 -04:00
parent 5dd886e243
commit 6e31958e85
1 changed files with 11 additions and 4 deletions

View File

@ -182,11 +182,18 @@ class ClassStamper(
extraHashes: Seq[Digest],
log: Logger,
): Option[Digest] =
val digests = SortedSet(analyses.flatMap(internalStamp(javaClassName, _, Set.empty, log))*)
log.debug(s"test: transitiveStamp($javaClassName, $extraHashes) = $digests")
if digests.nonEmpty then Some(Digest.sha256Hash(digests.toSeq ++ extraHashes*))
val digests = transitiveStamps(javaClassName, extraHashes, log)
if digests.nonEmpty then Some(Digest.sha256Hash(digests*))
else None
private def transitiveStamps(
javaClassName: String,
extraHashes: Seq[Digest],
log: Logger,
): Seq[Digest] =
val digests = SortedSet(analyses.flatMap(internalStamp(javaClassName, _, Set.empty, log))*)
digests.toSeq ++ extraHashes
private def internalStamp(
javaClassName: String,
analysis: Analysis,
@ -205,7 +212,7 @@ class ClassStamper(
val internalJarDeps = relations
.externalDeps(className)
.flatMap: libClassName =>
transitiveStamp(libClassName, Nil, log)
transitiveStamps(libClassName, Nil, log)
val externalDeps = relations
.externalDeps(className)
.flatMap: libClassName =>