rust-lang / rust-lang/rustc_codegen_cranelift

Tracking issue for linker performance

Open
#762 12 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

compile-time
Dominant language
Rust
Stars
2.1k
Forks
157
Avg merge
1d 19h
Merged PRs (30d)
3

Description

cg_llvm

simple-raytracer $ for i in 0 1 2 3 4 5 6 7 8 9; do rm -r target/debug/{deps/libraytracer-*,incremental}; cargo rustc --bin main -- -Ztime-passes 2>/dev/null | grep linking; done
  time: 0.792; rss: 202MB       linking
  time: 0.789; rss: 202MB       linking
  time: 0.793; rss: 202MB       linking
  time: 0.789; rss: 203MB       linking
  time: 0.795; rss: 202MB       linking
  time: 0.788; rss: 203MB       linking
  time: 0.786; rss: 206MB       linking
  time: 0.796; rss: 204MB       linking
  time: 0.790; rss: 201MB       linking
  time: 0.795; rss: 203MB       linking

cg_clif

simple-raytracer $ for i in 0 1 2 3 4 5 6 7 8 9; do rm -r target/x86_64-unknown-linux-gnu/debug/{deps/libraytracer-*,incremental}; CHANNEL=release ../cargo.sh rustc --bin main -- -Ztime-passes 2>/dev/null | grep linking; done
  time: 0.923; rss: 150MB       linking
  time: 0.924; rss: 150MB       linking
  time: 0.915; rss: 151MB       linking
  time: 0.925; rss: 151MB       linking
  time: 0.915; rss: 152MB       linking
  time: 0.920; rss: 151MB       linking
  time: 0.923; rss: 150MB       linking
  time: 0.913; rss: 150MB       linking
  time: 0.922; rss: 150MB       linking
  time: 0.922; rss: 151MB       linking

The linker is responsible for more than half of the compilation time of simple-raytracer's lib and bin combined when using cg_clif.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the simple-raytracer benchmark commands shown for cg_llvm and cg_clif, and compare the reported linking times and memory use. No source files or tests are identified; done would require locating the relevant linker path and demonstrating a measurable improvement in the linking portion of compilation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers, performance
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.