Skip to content

Cargo no-op build time is huge #5315

@matklad

Description

@matklad

You can get some internal profiling metrics by running CARGO_PROFILE=1 cargo build. Here's what I get with 1.18.0 and with current stable:

$ 1.18.0
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
         11ms - resolving
              0ms - updating: registry https://github.com/rust-lang/crates.io-index
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
         11ms - resolving
              0ms - updating: registry https://github.com/rust-lang/crates.io-index
          0ms - resolving w/ overrides...
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
         11ms - resolving
              0ms - updating: registry https://github.com/rust-lang/crates.io-index
          0ms - resolving w/ overrides...
          4ms - resolving
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
         11ms - resolving
              0ms - updating: registry https://github.com/rust-lang/crates.io-index
          0ms - resolving w/ overrides...
          4ms - resolving
         59ms - compiling
              0ms - preparing layout
              0ms - preparing: rustraytracer v0.1.0 (file:///home/matklad/projects/rustraytracer)/rustraytracer
              0ms - preparing: regex v0.2.6/regex
              0ms - preparing: thread_local v0.3.5/thread_local
              0ms - preparing: unreachable v1.0.0/unreachable
              0ms - preparing: void v1.0.2/void
              0ms - preparing: lazy_static v1.0.0/lazy_static
              0ms - preparing: utf8-ranges v1.0.0/utf8-ranges
              0ms - preparing: memchr v2.0.1/memchr
              0ms - preparing: libc v0.2.36/libc
              0ms - preparing: regex-syntax v0.4.2/regex-syntax
              0ms - preparing: aho-corasick v0.6.4/aho_corasick
              0ms - preparing: rayon v1.0.0/rayon
              0ms - preparing: rayon-core v1.4.0/rayon-core
              0ms - preparing: rand v0.4.2/rand
              0ms - preparing: crossbeam-deque v0.2.0/crossbeam-deque
              0ms - preparing: crossbeam-utils v0.2.2/crossbeam-utils
              0ms - preparing: cfg-if v0.1.2/cfg-if
              0ms - preparing: crossbeam-epoch v0.3.0/crossbeam-epoch
              0ms - preparing: nodrop v0.1.12/nodrop
              0ms - preparing: arrayvec v0.4.7/arrayvec
              0ms - preparing: memoffset v0.2.1/memoffset
              0ms - preparing: lazy_static v0.2.11/lazy_static
              0ms - preparing: scopeguard v0.3.3/scopeguard
              0ms - preparing: num_cpus v1.8.0/num_cpus
              0ms - preparing: rayon-core v1.4.0/build-script-build
              0ms - preparing: rayon-core v1.4.0/build-script-build
              0ms - preparing: either v1.4.0/either
              0ms - preparing: utils v0.1.0 (file:///home/matklad/projects/rustraytracer/libs/utils)/utils
              0ms - preparing: time v0.1.39/time
              0ms - preparing: geom v0.1.0 (file:///home/matklad/projects/rustraytracer/libs/geom)/geom
              0ms - preparing: rustc-serialize v0.3.24/rustc-serialize
              0ms - preparing: rustraytracer v0.1.0 (file:///home/matklad/projects/rustraytracer)/rustraytracer
              1ms - executing the job graph

$ stable
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
         13ms - resolving
              0ms - updating: registry `https://github.com/rust-lang/crates.io-index`
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
         13ms - resolving
              0ms - updating: registry `https://github.com/rust-lang/crates.io-index`
          0ms - resolving w/ overrides...
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
         13ms - resolving
              0ms - updating: registry `https://github.com/rust-lang/crates.io-index`
          0ms - resolving w/ overrides...
          0ms - resolving
          0ms - updating: file:///home/matklad/projects/rustraytracer
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/geom
          0ms - updating: file:///home/matklad/projects/rustraytracer/libs/utils
         13ms - resolving
              0ms - updating: registry `https://github.com/rust-lang/crates.io-index`
          0ms - resolving w/ overrides...
          0ms - resolving
        169ms - compiling
              0ms - preparing layout
              0ms - preparing: rustraytracer v0.1.0 (file:///home/matklad/projects/rustraytracer)/rustraytracer
              0ms - preparing: utils v0.1.0 (file:///home/matklad/projects/rustraytracer/libs/utils)/utils
              0ms - preparing: rand v0.4.2/rand
              0ms - preparing: libc v0.2.36/libc
              0ms - preparing: time v0.1.39/time
              0ms - preparing: regex v0.2.6/regex
              0ms - preparing: memchr v2.0.1/memchr
              0ms - preparing: utf8-ranges v1.0.0/utf8-ranges
              0ms - preparing: regex-syntax v0.4.2/regex-syntax
              0ms - preparing: thread_local v0.3.5/thread_local
              0ms - preparing: lazy_static v1.0.0/lazy_static
              0ms - preparing: unreachable v1.0.0/unreachable
              0ms - preparing: void v1.0.2/void
              0ms - preparing: aho-corasick v0.6.4/aho_corasick
              0ms - preparing: geom v0.1.0 (file:///home/matklad/projects/rustraytracer/libs/geom)/geom
              0ms - preparing: rustc-serialize v0.3.24/rustc-serialize
              0ms - preparing: rayon v1.0.0/rayon
              0ms - preparing: either v1.4.0/either
              0ms - preparing: rayon-core v1.4.0/rayon-core
              0ms - preparing: crossbeam-deque v0.2.0/crossbeam-deque
              0ms - preparing: crossbeam-epoch v0.3.0/crossbeam-epoch
              0ms - preparing: memoffset v0.2.1/memoffset
              0ms - preparing: lazy_static v0.2.11/lazy_static
              0ms - preparing: cfg-if v0.1.2/cfg-if
              0ms - preparing: crossbeam-utils v0.2.2/crossbeam-utils
              0ms - preparing: arrayvec v0.4.7/arrayvec
              0ms - preparing: nodrop v0.1.12/nodrop
              0ms - preparing: scopeguard v0.3.3/scopeguard
              0ms - preparing: num_cpus v1.8.0/num_cpus
              0ms - preparing: rayon-core v1.4.0/build-script-build
              0ms - preparing: rayon-core v1.4.0/build-script-build
              0ms - preparing: rustraytracer v0.1.0 (file:///home/matklad/projects/rustraytracer)/rustraytracer
              0ms - executing the job graph

Looks like we've regressed pretty significantly over time :-(

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions