cpython/Lib/profiling/sampling
ivonastojanovic f4d3c61f36
gh-138122: Add differential flame graph (#145785)
Differential flame graphs compare two profiling runs and highlight where
performance has changed. This makes it easier to detect regressions
introduced by code changes and to verify that optimizations have the
intended effect.

The visualization renders the current profile with frame widths
representing current time consumption. Color is then applied to show the
difference relative to the baseline profile: red gradients indicate
regressions, while blue gradients indicate improvements.

Some call paths may disappear entirely between profiles. These are
referred to as elided stacks and occur when optimizations remove code
paths or when certain branches stop executing. When elided stacks are
present, an "Elided" toggle is displayed, allowing the user to switch
between the main differential view and a view showing only the removed
paths.

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
2026-03-30 12:31:06 +01:00
..
_assets gh-138122: Add code examples to the profiling.sampling ddocs (#142609) 2025-12-12 01:37:47 +00:00
_flamegraph_assets gh-138122: Add differential flame graph (#145785) 2026-03-30 12:31:06 +01:00
_heatmap_assets gh-142927: Detect system theme in flame graph like in heatmap (#144885) 2026-03-10 13:38:48 +02:00
_shared_assets gh-142927: Detect system theme in flame graph like in heatmap (#144885) 2026-03-10 13:38:48 +02:00
_vendor gh-135953: Add flamegraph reporter to sampling profiler (#138715) 2025-09-09 23:06:45 +01:00
live_collector gh-138122: Move local imports to module level in sampling profiler (#143257) 2026-01-02 02:31:39 +00:00
__init__.py gh-140677 Add heatmap visualization to Tachyon sampling profiler (#140680) 2025-12-02 20:33:40 +00:00
__main__.py gh-142654: show the clear error message when sampling on an unknown PID in tachyon (#142655) 2025-12-17 14:15:22 +00:00
_child_monitor.py gh-138122: Replace --interval with --sampling-rate (#143085) 2025-12-24 13:46:33 +00:00
_css_utils.py gh-140677 Add heatmap visualization to Tachyon sampling profiler (#140680) 2025-12-02 20:33:40 +00:00
_format_utils.py gh-142927: Tachyon: Comma separate thousands and fix singular/plurals (#142934) 2025-12-22 14:15:57 +00:00
_sync_coordinator.py gh-143040: Exit taychon live mode gracefully and display profiled script errors (#143101) 2025-12-27 00:36:15 +00:00
binary_collector.py gh-138122: Allow tachyon to write and read binary output (#142730) 2025-12-22 23:57:20 +00:00
binary_reader.py gh-138122: Move local imports to module level in sampling profiler (#143257) 2026-01-02 02:31:39 +00:00
cli.py gh-138122: Add differential flame graph (#145785) 2026-03-30 12:31:06 +01:00
collector.py gh-142927: Hide _sync_coordinator frames from profiler output (#143337) 2026-01-02 12:09:36 +00:00
constants.py gh-135953: Properly obtain main thread identifier in Gecko Collector (#146045) 2026-03-22 18:53:00 +00:00
errors.py gh-142654: show the clear error message when sampling on an unknown PID in tachyon (#142655) 2025-12-17 14:15:22 +00:00
gecko_collector.py gh-135953: Properly obtain main thread identifier in Gecko Collector (#146045) 2026-03-22 18:53:00 +00:00
heatmap_collector.py gh-142927: Detect system theme in flame graph like in heatmap (#144885) 2026-03-10 13:38:48 +02:00
opcode_utils.py gh-138122: Make the tachyon profiler opcode-aware (#142394) 2025-12-11 03:41:47 +00:00
pstats_collector.py gh-138122: Move local imports to module level in sampling profiler (#143257) 2026-01-02 02:31:39 +00:00
sample.py gh-142927: Tachyon: Fix singular and plurals (#145329) 2026-02-28 01:48:35 +00:00
stack_collector.py gh-138122: Add differential flame graph (#145785) 2026-03-30 12:31:06 +01:00
string_table.py gh-135953: Reduce memory usage of stack collectors (#138875) 2025-09-14 23:47:14 +01:00