tp: always try and scan out where possible
This CL improves the behaviour of filtering when we have a range/index
vector in output. Instead of scanning on of the source RowMap, we only
look at the available rows.
This CL also has some misc cleanups to increase code reuse.
Before:
ns it
---------------------------------------------- ---------- ------
BM_RowMapFilterIntoRangeWithRange 27358 25415
BM_RowMapFilterIntoIvWithRange 253892 2846
BM_RowMapFilterIntoIvWithBv 832153 827
BM_TableFilterRootNonNullEqMatchMany/2097152 6992083 100
BM_TableFilterRootMultipleNonNull/2097152 8053785 87
BM_TableFilterRootNullableEqMatchMany/2097152 34362321 20
BM_TableFilterParentSortedAndOther/2097152 3880135 177
After:
ns it
---------------------------------------------- ---------- -------
BM_RowMapFilterIntoRangeWithRange 2507 275405
BM_RowMapFilterIntoIvWithRange 142639 4970
BM_RowMapFilterIntoIvWithBv 918092 743
BM_TableFilterRootNonNullEqMatchMany/2097152 6149328 115
BM_TableFilterRootMultipleNonNull/2097152 3924791 177
BM_TableFilterRootNullableEqMatchMany/2097152 31969190 22
BM_TableFilterParentSortedAndOther/2097152 11040 61066
Analysis:
There's a small regression in BM_RowMapFilterIntoIvWithBv which is a
bit unexpected but as this case is not so common and there are big
gains elsewhere, it seems worth landing this.
Bug: b/148135145
Change-Id: I06357379b42a588002e3aeb2031503759c841d1bPerfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.
See www.perfetto.dev for docs.
See /docs/contributing.md for instructions.
The source-of-truth repo is Android's Gerrit. The GitHub repo is a read-only mirror.
You can reach us on our Discord channel. If you prefer using IRC we have an experimental Discord <> IRC bridge synced with #perfetto-dev on Freenode.