Sponsor Presentation - Python Profiling State of the World

Discover the state of Python profiling, including deterministic and sampling profilers, flame graphs, and continuous profilers. Learn how to choose the right profiler for your use case and challenges.

Key takeaways
  • Deterministic profilers track every function invocation, whereas sampling profilers collect snapshots of function calls at regular intervals.
  • C profile is a deterministic profiler that runs in-process, whereas Profile is also a deterministic profiler that runs out-of-process.
  • Sampling profilers, like PyInstrument, have low overhead but may not accurately represent rare events.
  • Flame graphs are a type of data visualization that display function call stacks in a single image.
  • Aggregating durations in profiling data can be challenging due to the nature of flame graphs.
  • The Brendan Gregg flame graph format is a popular way to represent profiling data.
  • The sampling frequency of profilers can be configured to balance accuracy and overhead.
  • Inductive trace benchmarks are used to measure the performance of profilers.
  • Continuous profilers, like Sentry, collect profiling data from multiple runs and machines.
  • Debuggers are useful for understanding why code forks, whereas profilers help understand where time is being spent.
  • There are different ways to visualize profiling data, each with its own strengths and weaknesses.
  • The overhead of profilers can be significant, even with sampling profilers.
  • Adam’s paper on profiling was influential in the development of sampling profilers.
  • The main limitation of continuous profilers is their overhead.
  • Some profilers, like OProfile, use timer interrupts to collect profiling data.
  • The choice of profiler depends on the specific use case and requirements.