Loading startop/apps/test/Android.bp +3 −2 Original line number Diff line number Diff line Loading @@ -17,11 +17,12 @@ android_app { name: "startop_test_app", srcs: [ "src/ComplexLayoutInflationActivity.java", "src/CPUIntensive.java", "src/EmptyActivity.java", "src/LayoutInflationActivity.java", "src/ComplexLayoutInflationActivity.java", "src/FrameLayoutInflationActivity.java", "src/LayoutInflationActivity.java", "src/NonInteractiveSystemServerBenchmarkActivity.java", "src/SystemServerBenchmarkActivity.java", "src/SystemServerBenchmarks.java", "src/TextViewInflationActivity.java", Loading startop/apps/test/AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,11 @@ </intent-filter> </activity> <activity android:label="Non-interactive SystemServer Benchmark" android:name=".NonInteractiveSystemServerBenchmarkActivity" android:exported="true" /> </application> </manifest> startop/apps/test/README.md +11 −0 Original line number Diff line number Diff line Loading @@ -24,3 +24,14 @@ spent in view inflation to make it easier to focus on the time spent in view inflation. adb shell am start -n com.android.startop.test/.ComplexLayoutInflationActivity ## NonInteractiveSystemServerBenchmark This activity is for running microbenchmarks from the command line. Run as follows: adb shell am start -W -n com.android.startop.test .NonInteractiveSystemServerBenchmarkActivity It takes awhile (and there's currently no automated way to make sure it's done), but when it finishes, you can get the results like this: adb shell cat /sdcard/Android/data/com.android.startop.test/files/benchmark.csv startop/apps/test/src/NonInteractiveSystemServerBenchmarkActivity.java 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * 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 java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.util.ArrayList; import android.app.Activity; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.AsyncTask; import android.os.Bundle; import android.view.ViewGroup; import android.widget.Button; import android.widget.GridLayout; import android.widget.TextView; public class NonInteractiveSystemServerBenchmarkActivity extends Activity { ArrayList<CharSequence> benchmarkNames = new ArrayList(); ArrayList<Runnable> benchmarkThunks = new ArrayList(); PrintStream out; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SystemServerBenchmarks.initializeBenchmarks(this, (name, thunk) -> { benchmarkNames.add(name); benchmarkThunks.add(thunk); }); try { out = new PrintStream(new File(getExternalFilesDir(null), "benchmark.csv")); } catch (FileNotFoundException e) { throw new RuntimeException(e); } out.println("Name,Mean,Stdev"); runBenchmarks(0); } void runBenchmarks(int i) { if (i < benchmarkNames.size()) { SystemServerBenchmarks.runBenchmarkInBackground(benchmarkThunks.get(i), (mean, stdev) -> { out.printf("%s,%.0f,%.0f\n", benchmarkNames.get(i), mean, stdev); runBenchmarks(i + 1); }); } } } startop/apps/test/src/SystemServerBenchmarks.java +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ class SystemServerBenchmarks { // Time limit to run benchmarks in seconds public static final int TIME_LIMIT = 5; static void initializeBenchmarks(BenchmarkRunner benchmarks, Activity parent) { static void initializeBenchmarks(Activity parent, BenchmarkRunner benchmarks) { benchmarks.addBenchmark("Empty", () -> { }); Loading Loading
startop/apps/test/Android.bp +3 −2 Original line number Diff line number Diff line Loading @@ -17,11 +17,12 @@ android_app { name: "startop_test_app", srcs: [ "src/ComplexLayoutInflationActivity.java", "src/CPUIntensive.java", "src/EmptyActivity.java", "src/LayoutInflationActivity.java", "src/ComplexLayoutInflationActivity.java", "src/FrameLayoutInflationActivity.java", "src/LayoutInflationActivity.java", "src/NonInteractiveSystemServerBenchmarkActivity.java", "src/SystemServerBenchmarkActivity.java", "src/SystemServerBenchmarks.java", "src/TextViewInflationActivity.java", Loading
startop/apps/test/AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,11 @@ </intent-filter> </activity> <activity android:label="Non-interactive SystemServer Benchmark" android:name=".NonInteractiveSystemServerBenchmarkActivity" android:exported="true" /> </application> </manifest>
startop/apps/test/README.md +11 −0 Original line number Diff line number Diff line Loading @@ -24,3 +24,14 @@ spent in view inflation to make it easier to focus on the time spent in view inflation. adb shell am start -n com.android.startop.test/.ComplexLayoutInflationActivity ## NonInteractiveSystemServerBenchmark This activity is for running microbenchmarks from the command line. Run as follows: adb shell am start -W -n com.android.startop.test .NonInteractiveSystemServerBenchmarkActivity It takes awhile (and there's currently no automated way to make sure it's done), but when it finishes, you can get the results like this: adb shell cat /sdcard/Android/data/com.android.startop.test/files/benchmark.csv
startop/apps/test/src/NonInteractiveSystemServerBenchmarkActivity.java 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * 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 java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.util.ArrayList; import android.app.Activity; import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.AsyncTask; import android.os.Bundle; import android.view.ViewGroup; import android.widget.Button; import android.widget.GridLayout; import android.widget.TextView; public class NonInteractiveSystemServerBenchmarkActivity extends Activity { ArrayList<CharSequence> benchmarkNames = new ArrayList(); ArrayList<Runnable> benchmarkThunks = new ArrayList(); PrintStream out; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SystemServerBenchmarks.initializeBenchmarks(this, (name, thunk) -> { benchmarkNames.add(name); benchmarkThunks.add(thunk); }); try { out = new PrintStream(new File(getExternalFilesDir(null), "benchmark.csv")); } catch (FileNotFoundException e) { throw new RuntimeException(e); } out.println("Name,Mean,Stdev"); runBenchmarks(0); } void runBenchmarks(int i) { if (i < benchmarkNames.size()) { SystemServerBenchmarks.runBenchmarkInBackground(benchmarkThunks.get(i), (mean, stdev) -> { out.printf("%s,%.0f,%.0f\n", benchmarkNames.get(i), mean, stdev); runBenchmarks(i + 1); }); } } }
startop/apps/test/src/SystemServerBenchmarks.java +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ class SystemServerBenchmarks { // Time limit to run benchmarks in seconds public static final int TIME_LIMIT = 5; static void initializeBenchmarks(BenchmarkRunner benchmarks, Activity parent) { static void initializeBenchmarks(Activity parent, BenchmarkRunner benchmarks) { benchmarks.addBenchmark("Empty", () -> { }); Loading