mirror of https://github.com/sbt/sbt.git
[2.0.x] perf: Improve incremental test stamper (#9257)
**Problem** Incremental stamper is still causing perf issue. **Solution** This further avoids SHA-256 calls to calculate the stamp.
This commit is contained in:
parent
fc4273d0d1
commit
6d512c6ffa
|
|
@ -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 =>
|
||||
|
|
|
|||
Loading…
Reference in New Issue