From afb9b08dd8db25026f29b4882b885fea13979b70 Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Wed, 13 Nov 2019 15:24:40 -0800 Subject: [PATCH] Refactor interactive microbenchmarks Replaces the SystemServer Benchmark activity with one that has several sets of benchmarks grouped into categories. This will make it easier to add more benchmarks that do not logically fit with the categories we already have. This does not remove any of the other benchmark activities, but in a follow up CL, we should remove those since they are covered by the Interactive Microbenchmarks activity. This also does not adjust the non-interactive mode, which should also happen in a followup. Change-Id: I1d079362df0d32642525ede5b41779d76a5735ec --- startop/apps/test/Android.bp | 4 +-- startop/apps/test/AndroidManifest.xml | 8 +++--- .../src/CPUIntensiveBenchmarkActivity.java | 2 +- .../InitCheckOverheadBenchmarkActivity.java | 2 +- ...=> InteractiveMicrobenchmarkActivity.java} | 25 ++++++++++++++++++- ...NonInteractiveMicrobenchmarkActivity.java} | 2 +- .../apps/test/src/SystemServerBenchmarks.java | 3 --- 7 files changed, 33 insertions(+), 13 deletions(-) rename startop/apps/test/src/{SystemServerBenchmarkActivity.java => InteractiveMicrobenchmarkActivity.java} (68%) rename startop/apps/test/src/{NonInteractiveSystemServerBenchmarkActivity.java => NonInteractiveMicrobenchmarkActivity.java} (96%) diff --git a/startop/apps/test/Android.bp b/startop/apps/test/Android.bp index 3f20273a8d61a..c7c70db60a721 100644 --- a/startop/apps/test/Android.bp +++ b/startop/apps/test/Android.bp @@ -25,8 +25,8 @@ android_app { "src/InitCheckOverheadBenchmarkActivity.java", "src/InitCheckOverheadBenchmarks.java", "src/LayoutInflationActivity.java", - "src/NonInteractiveSystemServerBenchmarkActivity.java", - "src/SystemServerBenchmarkActivity.java", + "src/NonInteractiveMicrobenchmarkActivity.java", + "src/InteractiveMicrobenchmarkActivity.java", "src/SystemServerBenchmarks.java", "src/TextViewInflationActivity.java", ], diff --git a/startop/apps/test/AndroidManifest.xml b/startop/apps/test/AndroidManifest.xml index 235aa0d25e860..adaab61778edb 100644 --- a/startop/apps/test/AndroidManifest.xml +++ b/startop/apps/test/AndroidManifest.xml @@ -97,8 +97,8 @@ @@ -109,8 +109,8 @@ diff --git a/startop/apps/test/src/CPUIntensiveBenchmarkActivity.java b/startop/apps/test/src/CPUIntensiveBenchmarkActivity.java index 2ec5308afe14a..db3234a721292 100644 --- a/startop/apps/test/src/CPUIntensiveBenchmarkActivity.java +++ b/startop/apps/test/src/CPUIntensiveBenchmarkActivity.java @@ -18,7 +18,7 @@ package com.android.startop.test; import android.os.Bundle; -public class CPUIntensiveBenchmarkActivity extends SystemServerBenchmarkActivity { +public class CPUIntensiveBenchmarkActivity extends InteractiveMicrobenchmarkActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.system_server_benchmark_page); diff --git a/startop/apps/test/src/InitCheckOverheadBenchmarkActivity.java b/startop/apps/test/src/InitCheckOverheadBenchmarkActivity.java index 3e0e3b113a292..92d8638092d33 100644 --- a/startop/apps/test/src/InitCheckOverheadBenchmarkActivity.java +++ b/startop/apps/test/src/InitCheckOverheadBenchmarkActivity.java @@ -18,7 +18,7 @@ package com.android.startop.test; import android.os.Bundle; -public class InitCheckOverheadBenchmarkActivity extends SystemServerBenchmarkActivity { +public class InitCheckOverheadBenchmarkActivity extends InteractiveMicrobenchmarkActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.system_server_benchmark_page); diff --git a/startop/apps/test/src/SystemServerBenchmarkActivity.java b/startop/apps/test/src/InteractiveMicrobenchmarkActivity.java similarity index 68% rename from startop/apps/test/src/SystemServerBenchmarkActivity.java rename to startop/apps/test/src/InteractiveMicrobenchmarkActivity.java index 6be8df3728afe..8ed7f6ae21094 100644 --- a/startop/apps/test/src/SystemServerBenchmarkActivity.java +++ b/startop/apps/test/src/InteractiveMicrobenchmarkActivity.java @@ -18,12 +18,13 @@ package com.android.startop.test; import android.app.Activity; import android.content.Context; +import android.graphics.Typeface; import android.os.Bundle; import android.widget.Button; import android.widget.GridLayout; import android.widget.TextView; -public class SystemServerBenchmarkActivity extends Activity implements BenchmarkRunner { +public class InteractiveMicrobenchmarkActivity extends Activity implements BenchmarkRunner { protected GridLayout mBenchmarkList; protected void onCreate(Bundle savedInstanceState) { @@ -32,9 +33,31 @@ public class SystemServerBenchmarkActivity extends Activity implements Benchmark mBenchmarkList = findViewById(R.id.benchmark_list); + addBenchmark("Empty", () -> { + }); + addHeader("Application Benchmarks"); + CPUIntensiveBenchmarks.initializeBenchmarks(this, this); + addHeader("Init Check Overhead Benchmarks"); + InitCheckOverheadBenchmarks.initializeBenchmarks(this, this); + addHeader("System Server Benchmarks"); SystemServerBenchmarks.initializeBenchmarks(this, this); } + /** + * Add a heading for a group of related benchmarks + * + * @param name The name of this group of benchmarks + */ + public void addHeader(CharSequence name) { + Context context = mBenchmarkList.getContext(); + TextView header = new TextView(context); + header.setText(name); + header.setTypeface(header.getTypeface(), Typeface.BOLD); + GridLayout.LayoutParams params = new GridLayout.LayoutParams(); + params.columnSpec = GridLayout.spec(0, 3); + mBenchmarkList.addView(header, params); + } + /** * Adds a benchmark to the set to run. * diff --git a/startop/apps/test/src/NonInteractiveSystemServerBenchmarkActivity.java b/startop/apps/test/src/NonInteractiveMicrobenchmarkActivity.java similarity index 96% rename from startop/apps/test/src/NonInteractiveSystemServerBenchmarkActivity.java rename to startop/apps/test/src/NonInteractiveMicrobenchmarkActivity.java index a2dc2cf03d690..0162ac6c5d817 100644 --- a/startop/apps/test/src/NonInteractiveSystemServerBenchmarkActivity.java +++ b/startop/apps/test/src/NonInteractiveMicrobenchmarkActivity.java @@ -36,7 +36,7 @@ import android.widget.Button; import android.widget.GridLayout; import android.widget.TextView; -public class NonInteractiveSystemServerBenchmarkActivity extends Activity { +public class NonInteractiveMicrobenchmarkActivity extends Activity { ArrayList benchmarkNames = new ArrayList(); ArrayList benchmarkThunks = new ArrayList(); diff --git a/startop/apps/test/src/SystemServerBenchmarks.java b/startop/apps/test/src/SystemServerBenchmarks.java index 25b43f4d53f60..8114bc225c23e 100644 --- a/startop/apps/test/src/SystemServerBenchmarks.java +++ b/startop/apps/test/src/SystemServerBenchmarks.java @@ -57,9 +57,6 @@ class SystemServerBenchmarks { static void initializeBenchmarks(Activity parent, BenchmarkRunner benchmarks) { final String packageName = parent.getPackageName(); - benchmarks.addBenchmark("Empty", () -> { - }); - PackageManager pm = parent.getPackageManager(); benchmarks.addBenchmark("getInstalledApplications", () -> { pm.getInstalledApplications(PackageManager.MATCH_SYSTEM_ONLY);