Age | Commit message (Collapse) | Author |
|
Bug: 260881207
Test: presubmit
Test: abtd app_compat_drm
Test: abtd app_compat_top_100
Test: abtd app_compat_banking
Change-Id: Ib074e7b5ab0725fea5640ed7deaac3452fc27864
|
|
Implement `Size()` and rename `NumberOfReferences()` to
`Capacity()`. Replace `Capacity()` with `Size()` where
appropriate, for example to avoid visiting unused slots.
Remove some obsolete dead code and move some functions
from `FixedSizeHandleScope<.>` to `HandleScope`.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I1e49fb6144f77692ff22c6fbd0578d995b5a01f1
|
|
Bug: 169680875
Test: mmm art
Change-Id: Ic0cc320891c42b07a2b5520a584d2b62052e7235
|
|
Address late comments on
https://android-review.googlesource.com/968339 .
Test: m
Bug: 19575890
Change-Id: I111f5aaa9119af6d44f186ba111f7917cd7bac9a
|
|
Results for added benchmarks on blueline-userdebug with cpu
frequencies fxed at 1420800 (cpus 0-3; little) and 1459200
(cpus 4-7; big):
32-bit little (--variant=X32 --invoke-with 'taskset 0f')
timeAppendStringAndDouble: ~1260ns -> ~970ns
timeAppendStringAndFloat: ~1250ns -> ~940ns
timeAppendStringAndHugeDouble: ~4700ns -> ~4690ns (noise)
timeAppendStringAndHugeFloat: ~3400ns -> ~3300ns (noise)
timeAppendStringDoubleStringAndFloat: ~1980ns -> ~1550ns
64-bit little (--variant=X64 --invoke-with 'taskset 0f')
timeAppendStringAndDouble: ~1260ns -> ~970ns
timeAppendStringAndFloat: ~1260ns -> ~940ns
timeAppendStringAndHugeDouble: ~4700ns -> ~4800ns (noise)
timeAppendStringAndHugeFloat: ~3300ns -> ~3400ns (noise)
timeAppendStringDoubleStringAndFloat: ~1970ns -> ~1550ns
32-bit big (--variant=X32 --invoke-with 'taskset f0')
timeAppendStringAndDouble: ~580ns -> ~450ns
timeAppendStringAndFloat: ~590ns -> ~430ns
timeAppendStringAndHugeDouble: ~2500ns -> ~2100ns (noise)
timeAppendStringAndHugeFloat: ~1500ns -> ~1300ns (noise)
timeAppendStringDoubleStringAndFloat: ~880ns -> ~730ns
64-bit big (--variant=X64 --invoke-with 'taskset f0')
timeAppendStringAndDouble: ~590ns -> ~450ns
timeAppendStringAndFloat: ~590ns -> ~430ns
timeAppendStringAndHugeDouble: ~2300ns -> ~2300ns (noise)
timeAppendStringAndHugeFloat: ~1500ns -> ~1300ns (noise)
timeAppendStringDoubleStringAndFloat: ~870ns -> ~730ns
The `timeAppendStringAnd{Double,Float)` benchmarks show very
nice improvements, roughly 25% on both little and big cores.
The `timeAppendStringDoubleStringAndFloat` also shows decent
improvements, over 20% on little and over 15% on big cores.
(These benchmarks test the best-case scenario for "before"
as the StringBuilder's internal buffer is not reallocated.)
The `testAppendStringAndHuge{Double,Float}` results are too
noisy to draw any conclusions (especially on little cores
but there is still too much noise on big cores as well).
There are also small regressions for existing benchmarks
`timeAppend{LongStrings,StringAndInt,Strings}` but these
non-FP regressions may be mitigated after updating the
ThinLTO profile.
There is also an opportunity to optimize the calls back
to managed code for known shorty (in this change we use
"LD" and "LF") by using a dedicated stub instead of going
through the generic invoke stub.
Boot image size changes are insignificant (few matches).
Test: Added tests to 697-checker-string-append
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Test: testrunner.py --target --optimizing
Bug: 19575890
Change-Id: I9cf38c2d615a0a2b14255d18588a694d8870aae5
|
|
kIsInstrumented=false is reserved for use by specialized
entrypoints which are used only when we can ensure that
the code is not instrumented. So add the default argument
to simplify all other callers.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I3419795794fec9a1733ab3ad698b6415dbac679d
|
|
Recognize appending with StringBuilder and replace the
entire expression with a runtime call that perfoms the
append in a more efficient manner.
For now, require the entire pattern to be in a single block
and be very strict about the StringBuilder environment uses.
Also, do not accept StringBuilder/char[]/Object/float/double
arguments as they throw non-OOME exceptions and/or require a
call from the entrypoint back to a helper function in Java;
these shall be implemented later.
Boot image size for aosp_taimen-userdebug:
- before:
arm/boot*.oat: 19653872
arm64/boot*.oat: 23292784
oat/arm64/services.odex: 22408664
- after:
arm/boot*.oat: 19432184 (-216KiB)
arm64/boot*.oat: 22992488 (-293KiB)
oat/arm64/services.odex: 22376776 (-31KiB)
Note that const-string in compiled boot image methods cannot
throw, but for apps it can and therefore its environment can
prevent the optimization for apps. We could implement either
a simple carve-out for const-string or generic environment
pruning to allow this pattern to be applied more often.
Results for the new StringBuilderAppendBenchmark on taimen:
timeAppendLongStrings: ~700ns -> ~200ns
timeAppendStringAndInt: ~220ns -> ~140ns
timeAppendStrings: ~200ns -> 130ns
Bug: 19575890
Test: 697-checker-string-append
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Test: aosp_taimen-userdebug boots.
Test: run-gtests.sh
Test: testrunner.py --target --optimizing
Test: vogar --benchmark art/benchmark/stringbuilder-append/src/StringBuilderAppendBenchmark.java
Change-Id: I51789bf299f5219f68ada4c077b6a1d3fe083964
|