mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
## Summary - Adds `--cpu-prof-md` flag that outputs CPU profiling data in markdown format optimized for GitHub rendering and LLM analysis - Complements the existing `--cpu-prof` flag which outputs Chrome DevTools JSON format - `--cpu-prof-md` works standalone or combined with `--cpu-prof` to generate both formats ## Usage ```bash # Markdown only bun --cpu-prof-md script.js # Both formats bun --cpu-prof --cpu-prof-md script.js ``` ## Example Output # CPU Profile | Duration | Samples | Interval | Functions | |----------|---------|----------|----------| | 255.7ms | 178 | 1ms | 32 | **Top 10:** \`fibonacci\` 23.6%, \`fibonacci\` 12.6%, \`parseModule\` 11.7%, \`(anonymous)\` 9.5%, \`loadAndEvaluateModule\` 5.5%, \`requestSatisfyUtil\` 3.7%, \`main\` 2.7%, \`moduleDeclarationInstantiation\` 2.6%, \`loadModule\` 2.5%, \`cacheSatisfyAndReturn\` 2.5% ## Hot Functions (Self Time) | Self% | Self | Total% | Total | Function | Location | |------:|-----:|-------:|------:|----------|----------| | 23.6% | 60.5ms | 23.6% | 60.5ms | \`fibonacci\` | /tmp/test-profile.js | | 12.6% | 32.3ms | 100.0% | 1.29s | \`fibonacci\` | /tmp/test-profile.js:3 | | 11.7% | 29.9ms | 11.7% | 29.9ms | \`parseModule\` | [native code] | | 9.5% | 24.3ms | 43.4% | 111.0ms | \`(anonymous)\` | [native code] | | 5.5% | 14.2ms | 99.9% | 255.5ms | \`loadAndEvaluateModule\` | [native code] | ## Call Tree (Total Time) | Total% | Total | Self% | Self | Function | Location | |-------:|------:|------:|-----:|----------|----------| | 100.0% | 1.29s | 12.6% | 32.3ms | \`fibonacci\` | /tmp/test-profile.js:3 | | 99.9% | 255.5ms | 5.5% | 14.2ms | \`loadAndEvaluateModule\` | [native code] | | 86.0% | 219.9ms | 1.3% | 3.3ms | \`moduleEvaluation\` | [native code] | | 43.4% | 111.0ms | 9.5% | 24.3ms | \`(anonymous)\` | [native code] | ## Function Details ### \`fibonacci\` - **Location:** \`/tmp/test-profile.js:3\` - **Self:** 12.6% (32.3ms) | **Total:** 100.0% (1.29s) - **Called by:** \`fibonacci\` (864), \`main\` (68) - **Calls:** \`fibonacci\` (864), \`fibonacci\` (44), \`fibonacci\` (2) ### \`main\` - **Location:** \`/tmp/test-profile.js:9\` - **Self:** 0.0% (0us) | **Total:** 38.4% (98.2ms) - **Called by:** \`(module)\` (72) - **Calls:** \`fibonacci\` (68), \`inspect\` (2), \`fibonacci\` (2) ## Files | Self% | Self | File | |------:|-----:|------| | 58.8% | 150.6ms | \`[native code]\` | | 40.1% | 102.6ms | \`/tmp/test-profile.js\` | | 0.9% | 2.4ms | \`bun:main\` | ## Test plan - [x] `--cpu-prof-md` generates `.md` file with markdown tables - [x] `--cpu-prof-md` works standalone without `--cpu-prof` - [x] Both flags together generate both `.cpuprofile` and `.md` files - [x] Custom filename with `--cpu-prof-name` works - [x] Custom directory with `--cpu-prof-dir` works - [x] All 9 tests pass 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>