René's URL Explorer Experiment


Title: gh-138122: Add differential flame graph by ivonastojanovic · Pull Request #145785 · python/cpython · GitHub

Open Graph Title: gh-138122: Add differential flame graph by ivonastojanovic · Pull Request #145785 · python/cpython

X Title: gh-138122: Add differential flame graph by ivonastojanovic · Pull Request #145785 · python/cpython

Description: 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. In the diff view, slow_function improved (blue) and fast_function regressed (red) compared to the baseline. medium_function was removed (shown in the elided stacks toggle) and new_function was added (purple). Differential view Elided view CC: @pablogsal @lkollar Issue: gh-138122 📚 Documentation preview 📚: https://cpython-previews--145785.org.readthedocs.build/

Open Graph Description: 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 optimizati...

X Description: 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 optimizati...

Opengraph URL: https://github.com/python/cpython/pull/145785

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:a9c12e02-b343-0b2b-1b5f-07a6ed2511b7
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id95A0:2FB9D6:85F05E:B48025:6A528CE3
html-safe-nonce4a035ed749dd441aa790f09cad0efb825d655dfe5e07db5e23d69ac4744e0834
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NUEwOjJGQjlENjo4NUYwNUU6QjQ4MDI1OjZBNTI4Q0UzIiwidmlzaXRvcl9pZCI6IjM5NzMzODczNTk1NzIxMDIzNzEiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmaced7d9562fbccbc975c7ae7793200206ea01150561f3c1a9d091f1f8e4bebef55
hovercard-subject-tagpull_request:3380437626
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python/cpython/pull/145785/files
twitter:imagehttps://avatars.githubusercontent.com/u/80911834?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/80911834?s=400&v=4
og:image:altDifferential 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 optimizati...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release07a982c1d40157c619b364352b704c3ce66bb332
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/145785/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F145785%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F145785%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/pull/145785/files
Reloadhttps://github.com/python/cpython/pull/145785/files
Reloadhttps://github.com/python/cpython/pull/145785/files
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 35k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 73.8k https://github.com/login?return_to=%2Fpython%2Fcpython
Code https://github.com/python/cpython
Issues 5k+ https://github.com/python/cpython/issues
Pull requests 2.3k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security and quality 0 https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
Code https://github.com/python/cpython
Issues https://github.com/python/cpython/issues
Pull requests https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security and quality https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
pablogsalhttps://github.com/pablogsal
python:mainhttps://github.com/python/cpython/tree/main
ivonastojanovic:differential_flamegraphhttps://github.com/ivonastojanovic/cpython/tree/differential_flamegraph
Conversation 25 https://github.com/python/cpython/pull/145785
Commits 14 https://github.com/python/cpython/pull/145785/commits
Checks 46 https://github.com/python/cpython/pull/145785/checks
Files changed https://github.com/python/cpython/pull/145785/files
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
gh-138122: Add differential flame graph https://github.com/python/cpython/pull/145785/files#top
Show all changes 14 commits https://github.com/python/cpython/pull/145785/files
65528db Add differential flame graph ivonastojanovic Mar 8, 2026 https://github.com/python/cpython/pull/145785/commits/65528db03d7bf2bc7cf0b001c2cb65153cfadc94
2d97700 Add news ivonastojanovic Mar 10, 2026 https://github.com/python/cpython/pull/145785/commits/2d977007408d3027195848a155c99c0b576d29af
6e642e4 Fix colors ivonastojanovic Mar 26, 2026 https://github.com/python/cpython/pull/145785/commits/6e642e42951b66564af366b5865ae0f56d54ea7d
37289cb Show diff in ms ivonastojanovic Mar 26, 2026 https://github.com/python/cpython/pull/145785/commits/37289cb00dc9be48d58521a495472f90a87211c1
edaac9f Refactor active flamegraph data retrieval ivonastojanovic Mar 26, 2026 https://github.com/python/cpython/pull/145785/commits/edaac9fcdf8d2f1c6adc253f0e83da2881ffb6f1
c2203d6 Improve tests ivonastojanovic Mar 27, 2026 https://github.com/python/cpython/pull/145785/commits/c2203d67695bca714095a29999919b52313e543e
afe2f4e Change removed functions color ivonastojanovic Mar 27, 2026 https://github.com/python/cpython/pull/145785/commits/afe2f4ebfcc5f28f7313ae7bb4d1b06b5af08532
c0d937f Fix opcode merging in inverted flamegraph view ivonastojanovic Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/c0d937f83fd842b49ab94d07a54fe5fd7e99772e
080d2c8 fixup! Improve tests ivonastojanovic Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/080d2c8edd442933052897984f23097df3029717
440d333 Merge branch 'main' into differential_flamegraph ivonastojanovic Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/440d333df875aef352781b1f9ad69102e4438578
f4928b9 Update Lib/profiling/sampling/stack_collector.py pablogsal Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/f4928b968ed2aef3ca95075ff6e0f65975567f82
5556396 Update Lib/profiling/sampling/stack_collector.py picnixz Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/5556396e855fe2580b5b2f278b7640d620249ed0
d515f73 Random fixes pablogsal Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/d515f731d3b315b4b74c12040ab5d468e9b5bcd8
f753071 Small fix to cli pablogsal Mar 29, 2026 https://github.com/python/cpython/pull/145785/commits/f7530714c8c5cc089218926d0ae80a8e678176fc
Clear filters https://github.com/python/cpython/pull/145785/files
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
profiling.sampling.rst https://github.com/python/cpython/pull/145785/files#diff-fd865a49f6bfe4f5cc62789d01b048962675c6414556d2d658da9c3338e3f362
flamegraph.css https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
flamegraph.js https://github.com/python/cpython/pull/145785/files#diff-f154b900a5537cc40c99b86ad6f651f4e95ae01b5c00180bd4f94b69a5334dd1
flamegraph_template.html https://github.com/python/cpython/pull/145785/files#diff-87288e2d6ee961c06aecceb13c9cc525ee79c530deb94a797a134fa479e9b5f0
cli.py https://github.com/python/cpython/pull/145785/files#diff-51671a4eea64fc8902d5f510e433ab2949b6b5b6d944ec963ab541d5ee315e0f
stack_collector.py https://github.com/python/cpython/pull/145785/files#diff-30798ab579c76386ef4bc482ff5d57ec1b76978d34b3fd2556a158ddc0fb941e
mocks.py https://github.com/python/cpython/pull/145785/files#diff-86b995f17112ac0610d8ad2d4dda367fbbc101d5630004317b12fab01376724a
test_collectors.py https://github.com/python/cpython/pull/145785/files#diff-8436f3f406ad4ede0e395a9a742e325aee99447b5cdac2a56839230c0e519bd2
2026-03-10-19-50-59.gh-issue-138122.CsoBEo.rst https://github.com/python/cpython/pull/145785/files#diff-7dc9d3dc4d0dab714a80188f4de8092989af623710469adc2fe21195cc8af498
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L556
Doc/library/profiling.sampling.rsthttps://github.com/python/cpython/pull/145785/files#diff-fd865a49f6bfe4f5cc62789d01b048962675c6414556d2d658da9c3338e3f362
View file https://github.com/ivonastojanovic/cpython/blob/f7530714c8c5cc089218926d0ae80a8e678176fc/Doc/library/profiling.sampling.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/145785/{{ revealButtonHref }}
https://github.com/python/cpython/pull/145785/files#diff-fd865a49f6bfe4f5cc62789d01b048962675c6414556d2d658da9c3338e3f362
https://github.com/python/cpython/pull/145785/files#diff-fd865a49f6bfe4f5cc62789d01b048962675c6414556d2d658da9c3338e3f362
https://github.com/python/cpython/pull/145785/files#diff-fd865a49f6bfe4f5cc62789d01b048962675c6414556d2d658da9c3338e3f362
https://github.com/python/cpython/pull/145785/files#diff-fd865a49f6bfe4f5cc62789d01b048962675c6414556d2d658da9c3338e3f362
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L557
Lib/profiling/sampling/_flamegraph_assets/flamegraph.csshttps://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
View file https://github.com/ivonastojanovic/cpython/blob/f7530714c8c5cc089218926d0ae80a8e678176fc/Lib/profiling/sampling/_flamegraph_assets/flamegraph.css
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/145785/{{ revealButtonHref }}
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
https://github.com/python/cpython/pull/145785/files#diff-9938033569625f8ac4a6faa6ca656205a1640d72306f428adb63758d04a6c213
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
Please reload this pagehttps://github.com/python/cpython/pull/145785/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.