Skip to content

Change uint32_t fields to uint16_t to reduce FreeList footprint. - #1086

Draft
copybara-service[bot] wants to merge 1 commit into
masterfrom
test_987041263
Draft

copybara-service[bot] wants to merge 1 commit into
masterfrom
test_987041263

Conversation

@copybara-service

Copy link
Copy Markdown

Change uint32_t fields to uint16_t to reduce FreeList footprint.
This eliminates internal padding when the FreeList structure inherits from LinkedList.
The FreeList structure requires 12 bytes of fields, and replacing them with uint16_t allows all fields to fit within 6 bytes, allowing the complete FreeList sizes to fit into exactly 16 bytes rather than 24 or 32 bytes (depending on standard layout trailing padding).
This saves at least 16 bytes per size class for 93 size classes, yielding ~1.5 KiB memory saved per thread, or ~150 KiB for a typical 100-thread process.

This eliminates internal padding when the FreeList structure inherits from LinkedList.
The FreeList structure requires 12 bytes of fields, and replacing them with uint16_t allows all fields to fit within 6 bytes, allowing the complete FreeList sizes to fit into exactly 16 bytes rather than 24 or 32 bytes (depending on standard layout trailing padding).
This saves at least 16 bytes per size class for 93 size classes, yielding ~1.5 KiB memory saved per thread, or ~150 KiB for a typical 100-thread process.

PiperOrigin-RevId: 987041263

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant