Status Update
Comments
cc...@google.com <cc...@google.com>
[Deleted User] <[Deleted User]> #2
Replying from twitter:
Thanks for the bug report. Could you please add info about the Android platform version you ran your tests on ?
profiles were generated on an emulator running an avd like this one, with adb running as root:
Device: Nexus S (Google)
Path: /Users/duzinkie/.android/avd/nexus-s-api-31-rooted.avd
Target: Default Android System Image
Based on: Android API 31 Tag/ABI: default/x86_64
Skin: nexus_s
Sdcard: 512M
The improvements from using the profile were then measured on a pixel-6 (real device)
ra...@google.com <ra...@google.com> #3
[
is an array specifier. This is unsupported. This is why the baseline profile compilation step fails.
Removing [
specifiers and keeping the rest of the rule should work.
So you can turn [Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
to
Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
Let me look into this further, to see if there might be some post-processing that we might need.
Thanks for the bug report.
ra...@google.com <ra...@google.com> #4
Looks like we support [
qualified rules, to optimize for things like indexed access, and properties like .length
on the underlying type. This was added in Android S.
ART profiles on P
don't support this. We could have the Baseline Profile Compiler ignore this rule, because we can't really take advantage of this.
In the meantime, you can generate Baseline Profiles
on an emulator running Android P -> R.
[Deleted User] <[Deleted User]> #5
on an emulator running Android P -> R.
Thanks, so it should be running P, R, or either one is fine? Does minSdk/targetSdk of the app being profiled matter?
ra...@google.com <ra...@google.com> #6
No, it does not. We transcode the profile to the right targetSdkVersion
.
cc...@google.com <cc...@google.com> #7
Adding to benchmark 1.1 hotlist so we can workaround this by filtering these rules out until AGP profgen can handle them.
ra...@google.com <ra...@google.com>
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit b2a48d1f792432a647e9a5ef15dd9fce4bb12a1f
Author: Rahul Ravikumar <rahulrav@google.com>
Date: Thu Feb 10 11:23:02 2022
Filter profile rules to target Android P.
Test: Ran intergration tests on device running Android S.
Fixes:
Change-Id: I09d70fa23febd55a97217d01c5000c88b08edd41
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/BaselineProfiles.kt
A benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/BaselineProfilesTest.kt
Description
Hello, I've followed
the tutorials outlined here:
to generate and then use profiles for my app startup scenario.
Generation of the profiles went as planned - with baseline-prof generated on the emulator. When I copied the file to my app though, and tried to build it and run the tests that would measure the efficiency of those profiles, gradle complained about several syntax errors in the generated profiles (idk if they really are syntax errors).
The errors looked like this:
iirc, errors were also detected along the lines that started with '[', like this one:
[Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
I eventually went ahead and removed all patterns that resembled the failing ones (maybe removing too much), and the diff results were (unmodified profile diffed against one I edited manually:
We'd really love to use the new baseline profiling feature - let me know if there's more I can share to confirm where the issue might be.
Component used/Version used: in the tests that generated the profile:
Devices/Android versions reproduced on:
If this is a bug in the library, we would appreciate if you could attach: