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

[rustdoc] Box some more ItemKind variants #79975

Closed
wants to merge 7 commits into from

Conversation

jyn514
Copy link
Member

@jyn514 jyn514 commented Dec 12, 2020

Builds on #79967 and #79957 and should not be merged before. Helps with #79103.

This should *vastly* reduce memory usage.
This was simpler than expected.
- Use a tuple struct instead of a single field
- Enforce calling `source_callsite()` by making the inner span private
- Rename `empty` to `dummy`
@jyn514 jyn514 added T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. I-compilemem Issue: Problems and improvements with respect to memory usage during compilation. labels Dec 12, 2020
@rust-highfive
Copy link
Collaborator

r? @GuillaumeGomez

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 12, 2020
@jyn514
Copy link
Member Author

jyn514 commented Dec 12, 2020

I also tried boxing the Type in Constant and Static but that needed quite a few changes and had almost no impact on the size so I decided it wasn't worth it, it was hitting diminishing returns.

This brings the sizes down to

```
[src/librustdoc/lib.rs:102] std::mem::size_of::<Item>() = 520
[src/librustdoc/lib.rs:102] std::mem::size_of::<ItemKind>() = 248
```

from

```
[src/librustdoc/lib.rs:102] std::mem::size_of::<Item>() = 608
[src/librustdoc/lib.rs:102] std::mem::size_of::<ItemKind>() = 336
```
This reduces the size from

```
[src/librustdoc/lib.rs:102] std::mem::size_of::<Item>() = 520
[src/librustdoc/lib.rs:102] std::mem::size_of::<ItemKind>() = 248
```

to

```
[src/librustdoc/lib.rs:102] std::mem::size_of::<Item>() = 432
[src/librustdoc/lib.rs:102] std::mem::size_of::<ItemKind>() = 160
```
@jyn514
Copy link
Member Author

jyn514 commented Dec 14, 2020

See #79967 (comment), I would prefer to go with #80014.

@jyn514 jyn514 closed this Dec 14, 2020
@jyn514 jyn514 deleted the smaller-item-kind-2 branch December 14, 2020 22:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I-compilemem Issue: Problems and improvements with respect to memory usage during compilation. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants