aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-03-19 20:04:08 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2017-03-27 23:54:16 -0400
commita29fa8b51a167102d807330ce0c65d015e5c44e3 (patch)
treed0e898c609c56f4e07a7e70005c7cc32df27358d /stage1
parent90df89c5de90e69e7fdada655b169d0e48de0f57 (diff)
downloadcbt-a29fa8b51a167102d807330ce0c65d015e5c44e3.tar.gz
cbt-a29fa8b51a167102d807330ce0c65d015e5c44e3.tar.bz2
cbt-a29fa8b51a167102d807330ce0c65d015e5c44e3.zip
performance tweak: cache hashes in memory
Diffstat (limited to 'stage1')
-rw-r--r--stage1/resolver.scala13
1 files changed, 9 insertions, 4 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala
index 4f6a2ef..866105e 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -286,10 +286,15 @@ case class BoundMavenDependency(
}
private def resolveHash(suffix: String, useClassifier: Boolean) = {
- Files.readAllLines(
- resolve( suffix ++ ".sha1", None, useClassifier ).toPath,
- StandardCharsets.UTF_8
- ).mkString("\n").split(" ").head.trim
+ val path = resolve( suffix ++ ".sha1", None, useClassifier ).toPath
+ Option( classLoaderCache.hashMap.get("hash:"+path) ).map(_.asInstanceOf[String]).getOrElse{
+ val result = Files.readAllLines(
+ path,
+ StandardCharsets.UTF_8
+ ).mkString("\n").split(" ").head.trim
+ classLoaderCache.hashMap.put("hash:"+path, result)
+ result
+ }
}
def jarSha1: String = taskCache[BoundMavenDependency]("jarSha1").memoize{ resolveHash("jar", true) }