tp: shrink the executor's setup and per-batch code The executor carried several kilobytes of code which buys nothing: setup which runs once per query, per-batch bookkeeping, and plan-time casts, all compiled at -O3 with their helpers inlined into every caller. None of these changes touches a loop over rows. - Optionals in operator state are plain values: a vector of optionals cannot be reset with a memset, so -O3 unrolled each reset into kilobytes of code. Key types and column shapes are learnt together from the first batch, so an empty vector says they are unknown. - Selection's and RowBatch's copying moves out of line, as each of a dozen operators carried its own vectorized copy, and index copies become memcpy and memmove. - A pipeline segment is a range of steps rather than two vectors, and states are built at their size. - Filter value casters are one per storage type rather than one per type and comparison, 36 functions down to 6. - AssertType builds its errors out of line, and ColumnView::At checks for a sequence only when reading uint32_t, as only Id columns are sequences.
Perfetto is an open-source suite of SDKs, daemons and tools which use tracing to help developers understand the behaviour of complex systems and root-cause functional and performance issues on client and embedded systems.
It is a production-grade tool that is the default tracing system for the Android operating system and the Chromium browser.
Perfetto is not a single tool, but a collection of components that work together:
Perfetto was designed to be a versatile and powerful tracing system for a wide range of use cases.
ftrace, allowing you to visualize scheduling, syscalls, interrupts, and custom kernel tracepoints on a timeline.chrome://tracing. Use it to debug and root-cause issues in the browser, V8, and Blink.We‘ve designed our documentation to guide you to the right information as quickly as possible, whether you’re a newcomer to performance analysis or an experienced developer.
New to tracing? If you're unfamiliar with concepts like tracing and profiling, start here:
Ready to dive in? Our “Getting Started” guide is the main entry point for all users. It will help you find the right tutorials and documentation for your specific needs:
Want the full overview? For a comprehensive look at what Perfetto is, why it's useful, and who uses it, see our main documentation page:
For users interested in the Debian distribution of Perfetto, the official source of truth and packaging efforts are maintained at Debian Perfetto Salsa Repository
Have questions? Need help?
We follow Google's Open Source Community Guidelines.