Fixed
Status Update
Comments
cc...@google.com <cc...@google.com>
cc...@google.com <cc...@google.com>
ap...@google.com <ap...@google.com> #2
This was partially addressed by https://android-review.googlesource.com/c/platform/frameworks/support/+/2076902 , available now in 1.1 RC02, see b/230665435 .
As compilation on user builds requires a full target reinstall (which is a behavior change), we offer an opt out, which can be used to accomplish this feature request:
1) configure every macrobench to use `CompilationMode.Full()`
1) manually issuing the compile command `cmd package compile -f -m speed <packagename>` for your target
1) pass the instrumentation arg `androidx.benchmark.compilation.enable` = `false` to skip compilation/reinstall for each macrobenchmark.
This should still give you the numbers you've been seeing, while avoiding the cost of a large AOT each test.
Leaving this bug open, since in general we should be able to do this more automatically for everything without warmup driven profiles.
(Somewhat related bug - there have been excess compilations issued specifically for `Compilation.None`, `StartupMode.COLD` benchmarks, which has been fixed, but not shipped publicly yet: b/231976084 )
ma...@google.com <ma...@google.com>
ap...@google.com <ap...@google.com> #3
Note: ideally there's be a way to turn off all install related behavior without having to pass in an arg flag. If I want to handle installation & optimization without benchmark getting in the way, there should be an API for that. Arguably that's what Compilation.None should do, or there should be a Compilation.Interpreted and a Compilation.NoOp.
ma...@google.com <ma...@google.com> #4
Also, generally clearing profiles doesn't make much sense for Full compilation mode. I understand this makes sense for profile based benchmarks, but not really for full where the output shouldn't vary.
pr...@google.com <pr...@google.com> #5
> ideally there's be a way to turn off all install related behavior without having to pass in an arg flag.
We can't change APIs in an RC, but we'll consider it for 1.2
> Arguably that's what Compilation.None should do, or there should be a Compilation.Interpreted and a Compilation.NoOp.
`None` means "none of my app should be compiled", so at least a reset (if compilation has happened before) should occur. `Compilation.NoOp` or equivalent sounds reasonable.
> Also, generally clearing profiles doesn't make much sense for Full compilation mode.
I assume so too, I would want to validate that with ART and test it, but either way, we opted for full reinstallation for every test in 1.1 since it's predictable and consistent.
Description
experimentalProperties.put("android.experimental.force-aot-compilation", true)
via benchmark plugin, removing from