From 78f050f11541e96665c1cbc81b9c9ed70f1f131b Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 21 Dec 2022 13:36:54 +0530 Subject: [PATCH] Revert "fix(benchmark): remove startup benchmarks" This reverts commit fab5cb45c4f3b80039e94abc92ede96046ca5df1. --- .../benchmark/BaselineProfileBenchmark.kt | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 benchmark/src/main/kotlin/dev/msfjarvis/claw/benchmark/BaselineProfileBenchmark.kt diff --git a/benchmark/src/main/kotlin/dev/msfjarvis/claw/benchmark/BaselineProfileBenchmark.kt b/benchmark/src/main/kotlin/dev/msfjarvis/claw/benchmark/BaselineProfileBenchmark.kt new file mode 100644 index 00000000..567d2c84 --- /dev/null +++ b/benchmark/src/main/kotlin/dev/msfjarvis/claw/benchmark/BaselineProfileBenchmark.kt @@ -0,0 +1,58 @@ +/* + * Copyright © 2022 Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.benchmark + +import androidx.benchmark.macro.BaselineProfileMode +import androidx.benchmark.macro.CompilationMode +import androidx.benchmark.macro.StartupMode +import androidx.benchmark.macro.StartupTimingMetric +import androidx.benchmark.macro.junit4.MacrobenchmarkRule +import androidx.test.filters.LargeTest +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import org.junit.Before +import org.junit.Rule +import org.junit.Test + +@LargeTest +class BaselineProfileBenchmark { + @get:Rule val benchmarkRule = MacrobenchmarkRule() + private lateinit var device: UiDevice + + @Before + fun setUp() { + val instrumentation = InstrumentationRegistry.getInstrumentation() + device = UiDevice.getInstance(instrumentation) + } + + @Test + fun startupNoCompilation() { + startup(CompilationMode.None()) + } + + @Test + fun startupBaselineFullyCompiled() { + startup(CompilationMode.Full()) + } + + @Test + fun startupBaselineProfile() { + startup(CompilationMode.Partial(baselineProfileMode = BaselineProfileMode.Require)) + } + + private fun startup(compilationMode: CompilationMode) { + benchmarkRule.measureRepeated( + packageName = PACKAGE_NAME, + metrics = listOf(StartupTimingMetric()), + iterations = 10, + startupMode = StartupMode.COLD, + compilationMode = compilationMode + ) { + exploreUI(device) + } + } +}