From 12daf359e7b64a096057bdc8a809c55ebdf92e5b Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Wed, 13 Nov 2019 14:06:01 -0800 Subject: [PATCH] Add Layout Inflater Interactive Microbenchmark This allows us to quickly test small changes in layout inflation performance. TEST: mma && adb install $OUT/system/app/startop_test_app/startop_test_app.apk; Run the app Change-Id: I396157686d1e16ae2a7083a070fe1f622c05b15f --- startop/apps/test/Android.bp | 1 + .../apps/test/src/ApplicationBenchmarks.java | 39 +++++++++++++++++++ .../InteractiveMicrobenchmarkActivity.java | 2 + 3 files changed, 42 insertions(+) create mode 100644 startop/apps/test/src/ApplicationBenchmarks.java diff --git a/startop/apps/test/Android.bp b/startop/apps/test/Android.bp index c7c70db60a721..f42c755e3efd7 100644 --- a/startop/apps/test/Android.bp +++ b/startop/apps/test/Android.bp @@ -17,6 +17,7 @@ android_app { name: "startop_test_app", srcs: [ + "src/ApplicationBenchmarks.java", "src/ComplexLayoutInflationActivity.java", "src/CPUIntensiveBenchmarkActivity.java", "src/CPUIntensiveBenchmarks.java", diff --git a/startop/apps/test/src/ApplicationBenchmarks.java b/startop/apps/test/src/ApplicationBenchmarks.java new file mode 100644 index 0000000000000..7d71916e6d8d1 --- /dev/null +++ b/startop/apps/test/src/ApplicationBenchmarks.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.startop.test; + +import android.app.Activity; +import android.view.LayoutInflater; + +final class ApplicationBenchmarks { + + public static final void initializeBenchmarks(Activity parent, BenchmarkRunner benchmarks) { + LayoutInflater inflater = LayoutInflater.from(parent); + + benchmarks.addBenchmark("Complex Layout", () -> { + inflater.inflate(R.layout.activity_main, null); + }); + + benchmarks.addBenchmark("TextView List Layout", () -> { + inflater.inflate(R.layout.textview_list, null); + }); + + benchmarks.addBenchmark("FrameLayout List Layout", () -> { + inflater.inflate(R.layout.framelayout_list, null); + }); + } +} diff --git a/startop/apps/test/src/InteractiveMicrobenchmarkActivity.java b/startop/apps/test/src/InteractiveMicrobenchmarkActivity.java index 8ed7f6ae21094..c3839c17e4d85 100644 --- a/startop/apps/test/src/InteractiveMicrobenchmarkActivity.java +++ b/startop/apps/test/src/InteractiveMicrobenchmarkActivity.java @@ -36,6 +36,8 @@ public class InteractiveMicrobenchmarkActivity extends Activity implements Bench addBenchmark("Empty", () -> { }); addHeader("Application Benchmarks"); + ApplicationBenchmarks.initializeBenchmarks(this, this); + addHeader("CPU Intensive Benchmarks"); CPUIntensiveBenchmarks.initializeBenchmarks(this, this); addHeader("Init Check Overhead Benchmarks"); InitCheckOverheadBenchmarks.initializeBenchmarks(this, this);