-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Add a RUSTC_TIME env var to time rust crates during bootstrap #58508
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
Conversation
Why is this an environment variable rather than a flag to rustbuild? |
Ping from triage, @Zoxc, thoughts on comments thus far? |
Mostly because adding a flag is strictly more work and rustbuild already accepts environment variables as input. |
ping from triage @Zoxc any updates on this? is this still blocked on Cargo? |
Ping from triage @Zoxc: The cargo PR hasn't been updated in quite a while, do you have an rough estimate when this PR will be ready? |
The cargo PR will have to get merged, then we'll have to wait for it to land on beta. Probably will take a while. |
☔ The latest upstream changes (presumably #61494) made this pull request unmergeable. Please resolve the merge conflicts. |
Unblocking and marking as waiting-on-author as the relevant PR has been closed (with a comment that implies that maybe this is ready to move forward?) |
Rebased and unblocked. r? @oli-obk |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me with sanity assertion
@@ -93,6 +93,21 @@ fn main() { | |||
env::join_paths(&dylib_path).unwrap()); | |||
let mut maybe_crate = None; | |||
|
|||
// Get the name of the crate we're compiling, if any. | |||
let maybe_crate_name = args.windows(2) | |||
.find(|a| &*a[0] == "--crate-name") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please add an assert for checking whether the args
contain --crate-name=something
, since that will get silently ignored here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd rather not add more noise to this file.
FWIW I think that we shouldn't do this, but I won't block this PR based on my concerns, which largely center around -Ztime-passes being essentially deprecated, though not entirely useless, in favor of -Zself-profile. But I get why you'd want this so I won't stop you, especially because the impact on rustbuild is minimal. |
We can remove the changes of this PR once @bors r+ |
📌 Commit a0c7984 has been approved by |
Add a RUSTC_TIME env var to time rust crates during bootstrap Blocked on rust-lang/cargo#6674 r? @michaelwoerister Example for rustc with #58507: ``` time: 0.460; rss: 94MB parsing time: 0.000; rss: 94MB attributes injection time: 0.000; rss: 94MB recursion limit time: 0.000; rss: 94MB crate injection time: 0.000; rss: 94MB plugin loading time: 0.000; rss: 94MB plugin registration time: 0.044; rss: 94MB pre ast expansion lint checks time: 1.999; rss: 316MB expand crate time: 0.000; rss: 316MB check unused macros time: 2.000; rss: 316MB expansion time: 0.000; rss: 316MB maybe building test harness time: 0.053; rss: 316MB AST validation time: 0.000; rss: 316MB maybe creating a macro crate time: 1.515; rss: 397MB name resolution time: 0.122; rss: 397MB complete gated feature checking time: 0.655; rss: 546MB lowering ast -> hir time: 0.136; rss: 550MB early lint checks time: 0.117; rss: 540MB validate hir map time: 0.606; rss: 540MB indexing hir time: 0.000; rss: 480MB load query result cache time: 0.000; rss: 478MB dep graph tcx init time: 0.000; rss: 478MB looking for entry point time: 0.001; rss: 478MB looking for plugin registrar time: 0.001; rss: 478MB looking for derive registrar time: 0.049; rss: 478MB loop checking time: 0.064; rss: 479MB attribute checking time: 0.166; rss: 484MB stability checking time: 0.699; rss: 566MB type collecting time: 0.006; rss: 566MB outlives testing time: 0.018; rss: 568MB impl wf inference time: 0.002; rss: 583MB unsafety checking time: 0.005; rss: 583MB orphan checking time: 0.227; rss: 583MB coherence checking time: 0.006; rss: 583MB variance testing time: 1.546; rss: 657MB wf checking time: 0.389; rss: 665MB item-types checking time: 13.999; rss: 837MB item-bodies checking time: 1.692; rss: 883MB rvalue promotion time: 0.067; rss: 883MB intrinsic checking time: 0.624; rss: 887MB match checking time: 0.246; rss: 889MB liveness checking time: 2.629; rss: 889MB misc checking time: 0.000; rss: 889MB borrow checking time: 16.754; rss: 1242MB MIR borrow checking time: 0.050; rss: 1242MB dumping chalk-like clauses time: 0.010; rss: 1242MB MIR effect checking time: 0.001; rss: 1242MB layout testing time: 0.829; rss: 1244MB privacy checking time: 0.183; rss: 1247MB death checking time: 0.100; rss: 1248MB unused lib feature checking time: 0.405; rss: 1250MB lint checking time: 1.518; rss: 1250MB misc checking time: 0.000; rss: 1250MB resolving dependency formats time: 2.928; rss: 1332MB write metadata time: 0.014; rss: 1332MB collecting roots time: 7.621; rss: 1488MB collecting mono items time: 7.635; rss: 1488MB monomorphization collection time: 0.557; rss: 1567MB codegen unit partitioning time: 27.971; rss: 2656MB codegen to LLVM IR time: 0.056; rss: 2656MB assert dep graph time: 0.000; rss: 2656MB serialize dep graph time: 195.414; rss: 2656MB codegen time: 0.000; rss: 329MB serialize work products time: 1.664; rss: 331MB running linker time: 1.965; rss: 331MB linking [RUSTC-TIMING] rustc test:false 950.103 ``` It doesn't really look like the times add up here.
☀️ Test successful - checks-travis, status-appveyor |
Tested on commit rust-lang/rust@289b78a. Direct link to PR: <rust-lang/rust#58508> 🎉 rls on windows: test-fail → test-pass (cc @Xanewok, @rust-lang/infra).
Blocked on rust-lang/cargo#6674
r? @michaelwoerister
Example for rustc with #58507:
It doesn't really look like the times add up here.