diff --git a/src/main/kotlin/app/extractors/ExtractorInterface.kt b/src/main/kotlin/app/extractors/ExtractorInterface.kt index 1ff4d2c9..d2572990 100644 --- a/src/main/kotlin/app/extractors/ExtractorInterface.kt +++ b/src/main/kotlin/app/extractors/ExtractorInterface.kt @@ -12,20 +12,36 @@ import org.jpmml.evaluator.FieldValue import org.jpmml.evaluator.ModelEvaluatorFactory import org.jpmml.evaluator.ProbabilityDistribution import org.jpmml.model.PMMLUtil +import java.io.InputStream interface ExtractorInterface { companion object { - fun getLibraries(name: String): Set { + private val librariesCache = hashMapOf>() + private val evaluatorsCache = hashMapOf() + + private fun getResource(path: String): InputStream { return ExtractorInterface::class.java.classLoader - .getResourceAsStream("data/libraries/${name}_libraries.txt") + .getResourceAsStream(path) + } + + fun getLibraries(name: String): Set { + if (librariesCache.containsKey(name)) { + return librariesCache[name]!! + } + val libraries = getResource("data/libraries/${name}_libraries.txt") .bufferedReader().readLines().toSet() + librariesCache.put(name, libraries) + return libraries } + fun getLibrariesModelEvaluator(name: String): Evaluator { - val pmml = PMMLUtil.unmarshal( - ExtractorInterface::class.java.classLoader - .getResourceAsStream("data/models/$name.pmml")) + if (evaluatorsCache.containsKey(name)) { + return evaluatorsCache[name]!! + } + val pmml = PMMLUtil.unmarshal(getResource("data/models/$name.pmml")) val evaluator = ModelEvaluatorFactory.newInstance() .newModelEvaluator(pmml) + evaluatorsCache.put(name, evaluator) return evaluator } } diff --git a/src/main/kotlin/app/hashers/RepoHasher.kt b/src/main/kotlin/app/hashers/RepoHasher.kt index 93da5055..2ce98828 100644 --- a/src/main/kotlin/app/hashers/RepoHasher.kt +++ b/src/main/kotlin/app/hashers/RepoHasher.kt @@ -116,10 +116,12 @@ class RepoHasher(private val localRepo: LocalRepo, private val api: Api, serverRepo = api.getRepo(serverRepo.rehash) Logger.debug("Received repo from server with " + serverRepo.commits.size + " commits") + Logger.debug(serverRepo.toString()) } private fun postRepoToServer() { api.postRepo(serverRepo) + Logger.debug(serverRepo.toString()) } private fun initServerRepo(initCommitRehash: String) {