trace_processor: extract StorageSchema::Column and remove ColumnReporter

Following on from extracing all the column implementations from
StorageSchema, this CL also extracts out the column itself. This allows
cool stuff to happen without circular header dependenices involving
StorageSchema.

Also remove the concept of StorageCursor::ColumnReporter which never had
any implementors other than StorageSchema::Column and added a lot of
overhead for creating vectors of columns on every Filter operation.

This improves performance for JOINs involving nested subqueries
Old code on a 6MB trace: 90ms
New code on a 6MB trace: 60ms

Change-Id: I5ad080dbc3d419dd9aeb5d7fb011233c108695d9
14 files changed
tree: 9a72fbd7c5846d13dd3bc97e66c5722e43671fee
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. ui/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD.gn
  20. codereview.settings
  21. heapprofd.rc
  22. MODULE_LICENSE_APACHE2
  23. NOTICE
  24. OWNERS
  25. perfetto.rc
  26. PRESUBMIT.py
  27. README.chromium
  28. README.md
README.md

Perfetto - Performance instrumentation and tracing

Perfetto 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.

Bugs

  • For bugs affecting Android or the tracing internals use the internal bug tracker (go/perfetto-bugs).
  • For bugs affecting Chrome use http://crbug.com, Component:Speed>Tracing label:Perfetto.