From 02864ba50fafffd19bb1b635eea06004d9fd78aa Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Mon, 6 Apr 2020 16:36:49 +0200 Subject: perf: Optimize SimpleVirtDriver This change optimizes the SimpleVirtDriver by removing unnecessary cancellations (which take a lot of time due to exception construction). Moreover, we now try to keep intermediate state sorted so that we do not have to re-sort every scheduling cycle (which was rather heavy as profiling showed). --- .../main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'opendc/opendc-experiments-sc20') diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt index ca7e31ea..3392bd02 100644 --- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt +++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt @@ -119,6 +119,7 @@ fun createFaultInjector(domain: Domain, random: Random): FaultInjector { @OptIn(ExperimentalCoroutinesApi::class) fun main(args: Array) { ArgParser(args).parseInto(::ExperimentParameters).run { + val start = System.currentTimeMillis() val monitor = Sc20Monitor(outputFile) val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first() @@ -262,6 +263,7 @@ fun main(args: Array) { scheduler.terminate() failureDomain?.cancel() println(simulationContext.clock.instant()) + println("${System.currentTimeMillis() - start} milliseconds") } runBlocking { -- cgit v1.2.3