Allow running individual Compose benchmarks without warmups
Change-Id: If4347c082595a3e252da21828f9d09894fc54935
diff --git a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkBase.java b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkBase.java
index 917c268..0e74101 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkBase.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkBase.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.benchmarks;
import static org.junit.Assume.assumeFalse;
+import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -35,6 +36,15 @@
@Test
public void testBenchmarks() throws Exception {
+ testBenchmark();
+ }
+
+ protected void testBenchmarkWithName(String name) throws Exception {
+ assumeTrue(config.getName().equals(name));
+ testBenchmark();
+ }
+
+ private void testBenchmark() throws Exception {
// Slows down the windows bot considerably and does not add much extra value.
assumeFalse(ToolHelper.isWindows());
config.run(new BenchmarkEnvironment(config, temp, false));
diff --git a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkEnvironment.java b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkEnvironment.java
index e8e5641..fc04cbf 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkEnvironment.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkEnvironment.java
@@ -49,6 +49,14 @@
return Integer.parseInt(System.getProperty("BENCHMARK_ITERATIONS"));
}
+ public boolean hasBenchmarkWarmupIterationsOverride() {
+ return System.getProperty("BENCHMARK_WARMUP_ITERATIONS") != null;
+ }
+
+ public int getBenchmarkWarmupIterationsOverride() {
+ return Integer.parseInt(System.getProperty("BENCHMARK_WARMUP_ITERATIONS"));
+ }
+
public boolean hasOutputPath() {
return System.getProperty("BENCHMARK_OUTPUT") != null;
}
diff --git a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkRunner.java b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkRunner.java
index 85ae724..2029153 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkRunner.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkRunner.java
@@ -24,6 +24,12 @@
return new BenchmarkRunner(environment);
}
+ public int getWarmupIterations() {
+ return environment.hasBenchmarkWarmupIterationsOverride()
+ ? environment.getBenchmarkWarmupIterationsOverride()
+ : warmups;
+ }
+
public BenchmarkRunner setWarmupIterations(int iterations) {
this.warmups = iterations;
return this;
@@ -54,13 +60,13 @@
long warmupTotalTime = 0;
BenchmarkConfig config = environment.getConfig();
BenchmarkResultsWarmup warmupResults = null;
- if (warmups > 0) {
+ if (getWarmupIterations() > 0) {
warmupResults =
config.isSingleBenchmark()
? new BenchmarkResultsWarmup(config.getName())
: new BenchmarkResultsWarmup(config.getName(), config.getSubBenchmarks());
long start = System.nanoTime();
- for (int i = 0; i < warmups; i++) {
+ for (int i = 0; i < getWarmupIterations(); i++) {
fn.run(warmupResults);
}
warmupTotalTime = System.nanoTime() - start;
@@ -79,8 +85,8 @@
+ config.getName()
+ " on target "
+ config.getTarget().getIdentifierName());
- if (warmups > 0) {
- printMetaInfo("warmup", warmups, warmupTotalTime);
+ if (getWarmupIterations() > 0) {
+ printMetaInfo("warmup", getWarmupIterations(), warmupTotalTime);
if (config.hasTimeWarmupRuns()) {
warmupResults.printResults(resultMode, environment.failOnCodeSizeDifferences());
}
diff --git a/src/test/java/com/android/tools/r8/benchmarks/appdumps/ComposeSamplesBenchmarks.java b/src/test/java/com/android/tools/r8/benchmarks/appdumps/ComposeSamplesBenchmarks.java
index b74a7df..dd95d2d 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/appdumps/ComposeSamplesBenchmarks.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/appdumps/ComposeSamplesBenchmarks.java
@@ -12,6 +12,8 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
+import org.junit.Ignore;
+import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@@ -105,4 +107,51 @@
.allowUnusedDontWarnPatterns()
.allowUnusedProguardConfigurationRules();
}
+
+ @Ignore
+ @Test
+ @Override
+ public void testBenchmarks() throws Exception {
+ super.testBenchmarks();
+ }
+
+ @Test
+ public void testCraneApp() throws Exception {
+ testBenchmarkWithName("CraneApp");
+ }
+
+ @Test
+ public void testJetLaggedApp() throws Exception {
+ testBenchmarkWithName("JetLaggedApp");
+ }
+
+ @Test
+ public void testJetNewsApp() throws Exception {
+ testBenchmarkWithName("JetNewsApp");
+ }
+
+ @Test
+ public void testJetCasterApp() throws Exception {
+ testBenchmarkWithName("JetCasterApp");
+ }
+
+ @Test
+ public void testJetChatApp() throws Exception {
+ testBenchmarkWithName("JetChatApp");
+ }
+
+ @Test
+ public void testJetSnackApp() throws Exception {
+ testBenchmarkWithName("JetSnackApp");
+ }
+
+ @Test
+ public void testOwlApp() throws Exception {
+ testBenchmarkWithName("OwlApp");
+ }
+
+ @Test
+ public void testReplyApp() throws Exception {
+ testBenchmarkWithName("ReplyApp");
+ }
}