Idea: ship hot lists with releases #525
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
beanstalk: approved @ 1697603
beanstalk: approved @ 2c5a62e
beanstalk: approved @ 4fd82b7
beanstalk: approved @ 64d6d09
beanstalk: approved @ 6f91fae
beanstalk: approved @ 70a78f9
beanstalk: approved @ 8d361dc
beanstalk: approved @ 9d8356e
beanstalk: approved @ abf2227
beanstalk: approved @ d82f202
beanstalk: approved @ e5f1e40
beanstalk: approved @ ee8ab5f
ci: approved
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/macos
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
regression
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot#525
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The idea
Longshot already has everything needed to build the hottest lifted game functions at
-O2with a play profile, but releases don't ship with it, so every player's build compiles all of the lifted code at-O1.What exists today
scripts/hotlist.pyturns a sampled play session (HOS_SAMPLE_ALL) intohot_funcs.txt: the lifted functions that make up the first 85 % of samples, hottest first, capped at 1,500, plus the game's Zstd decoder.nx2/split_hot.pyputs those functions into eight hot pieces compiled at-O2with the play profile (RX_PGO, fitted to the pieces bynx2/pgo_pieces.py).scripts/tools.py assemble profilepacks the list and the profile for a release (RELEASING.md).make_game.pyuses them whenwork/has them.tools.lockhas noprofileline ("No play profile yet").What it buys and what it costs
With today's list, the 85 % cut comes to about 850 functions (849). Measured against main
0caf0618, the whole build before shaders:The proposal: generate the list before each release and ship it
hotlist.py <run> <out> 1.0 300) keeps the build cost the same from one release to the next; a share gives a different count on every session.tools.py assemble profile,tools.py add, and theprofileline intools.lock.Related
Anything else
The play profile holds addresses and counts only, no game data; the owner has approved publishing it. Measurements and scripts are on the PC that made them, and they can be added here.
🤖 Generated with Claude Code
Duplicate of #505 (created twice more while the forge was timing out). Closing.