Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Box big model type fields #2205

Merged
merged 4 commits into from
Oct 8, 2022
Merged

Conversation

kangalio
Copy link
Collaborator

@kangalio kangalio commented Oct 3, 2022

Before:
image

After:
Screenshot_20221003_183650

Guild unfortunately cannot reasonably be shrunken by just boxing its fields because it just contains a huge amount of small fields (HashMap takes 48 bytes each, Vec/String 24 bytes each).

@github-actions github-actions bot added examples Related to Serenity's examples. model Related to the `model` module. utils Related to the `utils` module. labels Oct 3, 2022
As JellyWX smartly noted:
> Boxing CommandData seems an odd choice considering this is probably going to be accessed a lot of the time that it is present. My understanding is that heap lookups are slower, but I don't know by how much?

https://discord.com/channels/381880193251409931/673965002805477386/1026528518445744188
@kangalio
Copy link
Collaborator Author

kangalio commented Oct 8, 2022

Out of curiosity I tested this on 32 bit:
Screenshot_20221008_104156

So yeah, people with <2GB RAM should run with 32 bit to cut down RAM usage significantly. (And 32 bit math is faster on modern CPUs too)

@arqunis arqunis added enhancement An improvement to Serenity. breaking change The public API is changed, resulting in miscompilations or unexpected new behaviour for users labels Oct 8, 2022
@arqunis arqunis merged commit a5b597d into serenity-rs:next Oct 8, 2022
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request Nov 7, 2022
This helps reduce the stack size of most types.
arqunis pushed a commit that referenced this pull request Nov 13, 2022
This helps reduce the stack size of most types.
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request Feb 28, 2023
This helps reduce the stack size of most types.
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request May 18, 2023
This helps reduce the stack size of most types.
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request May 30, 2023
This helps reduce the stack size of most types.
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request Sep 21, 2023
This helps reduce the stack size of most types.
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request Oct 17, 2023
This helps reduce the stack size of most types.
mkrasnitski pushed a commit to mkrasnitski/serenity that referenced this pull request Oct 24, 2023
This helps reduce the stack size of most types.
arqunis pushed a commit to arqunis/serenity that referenced this pull request Oct 24, 2023
This helps reduce the stack size of most types.
arqunis pushed a commit to arqunis/serenity that referenced this pull request Oct 24, 2023
This helps reduce the stack size of most types.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking change The public API is changed, resulting in miscompilations or unexpected new behaviour for users enhancement An improvement to Serenity. examples Related to Serenity's examples. model Related to the `model` module. utils Related to the `utils` module.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants