Skip to content

[rustdoc] Box some more ItemKind variants #79975

New issue

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

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

Already on GitHub? # to your account

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
Contributor

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 jyn514 force-pushed the smaller-item-kind-2 branch from ef93f6f to 5a24faf Compare December 12, 2020 20:26
@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
# for free to join this conversation on GitHub. Already have an account? # 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