From 4c70e44c9d25dcc6f38058f6b9819fb7c339391a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de> Date: Sat, 17 Apr 2021 15:15:05 +0200 Subject: [PATCH] Cont. add FullSearch strategy --- .../strategies/searchstrategy/FullSearch.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/FullSearch.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/FullSearch.kt index 3936d1982..9698dab18 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/FullSearch.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/FullSearch.kt @@ -8,18 +8,24 @@ import theodolite.util.Resource private val logger = KotlinLogging.logger {} /** - * Linear-search-like implementation for determining the smallest suitable number of instances. + * [SearchStrategy] that executes experiment for provides resources in a linear-search-like fashion, but **without + * stopping** once a suitable resource amount is found. + * + * @see LinearSearch for a SearchStrategy that stops once a suitable resource amount is found. * * @param benchmarkExecutor Benchmark executor which runs the individual benchmarks. */ -class LinearSearch(benchmarkExecutor: BenchmarkExecutor) : SearchStrategy(benchmarkExecutor) { +class FullSearch(benchmarkExecutor: BenchmarkExecutor) : SearchStrategy(benchmarkExecutor) { override fun findSuitableResource(load: LoadDimension, resources: List<Resource>): Resource? { + var minimalSuitableResources: Resource? = null; for (res in resources) { - logger.info { "Running experiment with load '$load' and resources '$res'" } - if (this.benchmarkExecutor.runExperiment(load, res)) return res + val result = this.benchmarkExecutor.runExperiment(load, res) + if (result && minimalSuitableResources != null) { + minimalSuitableResources = res + } } - return null + return minimalSuitableResources } } -- GitLab