Skip to content

Compiler slowdown on lage module in nightly #48153

Closed

Description

@crawford

I've noticed that the nightly compilers lately have taken quite a long time to compile efm32gg11b82. The crate is a large amount of code generated by svd2rust. I've narrowed down the difference in build time to a nightly release. The results below are from debug builds, but I've seen similar numbers for release builds.

rustc 1.25.0-nightly (bacb5c5 2018-01-26):

$ CARGO_INCREMENTAL=0 cargo build
   Compiling aligned v0.1.1
   Compiling bare-metal v0.1.1
   Compiling cortex-m v0.4.3
   Compiling vcell v0.1.0
   Compiling untagged-option v0.1.1
   Compiling volatile-register v0.2.0
   Compiling efm32gg11b820 v0.2.0 (file:///home/alex/efm32gg11b820)
    Finished dev [unoptimized + debuginfo] target(s) in 233.85 secs

rustc 1.25.0-nightly (7d6e5b9 2018-01-27):

$ CARGO_INCREMENTAL=0 cargo build
   Compiling cortex-m v0.4.3
   Compiling aligned v0.1.1
   Compiling bare-metal v0.1.1
   Compiling vcell v0.1.0
   Compiling untagged-option v0.1.1
   Compiling volatile-register v0.2.0
   Compiling efm32gg11b820 v0.2.0 (file:///home/alex/efm32gg11b820)
    Finished dev [unoptimized + debuginfo] target(s) in 2358.13 secs

I'm not really sure how to profile this further, so I'll take any suggestion you have.

Activity

  1. added
    I-compiletimeIssue: Problems and improvements with respect to compile times.
    on Feb 12, 2018
  2. Mark-Simulacrum commented on Feb 12, 2018

    @Mark-Simulacrum
    Member

    Looks like the only PRs in that range are #47571, #47690, #46450, and #47420. None of which seem immediately relevant. I also can't reproduce locally... https://gist.github.com/Mark-Simulacrum/dd7f4c6b0649fabbf598642ddf7c91a2. Are you sure these results are caused by some external process? What platform are you running on?

  3. crawford commented on Feb 12, 2018

    @crawford
    Author

    I've been able to reliably reproduce this behavior on my desktop. I tried re-running the test on my laptop and saw similar results. Both my laptop and desktop are using NixOS 17.09.2964.3e349a2b98b (Hummingbird) with Mozilla's nixpkgs overlay. The test results with the full invocations are below.

    The borrow checking stands out though...

      time: 15.996; rss: 3936MB     borrow checking
    

    vs.

      time: 1733.265; rss: 3936MB   borrow checking
    

    I'm going to go ahead and test this again inside of a fedora container to try to narrow down if this is specific to NixOS.

    Details
    $ nix-shell --packages '(rustChannelOf{ date = "2018-01-27"; channel = "nightly"; }).rust' --run 'rustc --version; cargo clean; export CARGO_INCREMENTAL=0; cargo rustc -- -Ztime-passes'
    rustc 1.25.0-nightly (bacb5c58d 2018-01-26)   
       Compiling bare-metal v0.1.1                             
       Compiling vcell v0.1.0                                
       Compiling cortex-m v0.4.3                                          
       Compiling aligned v0.1.1                                         
       Compiling untagged-option v0.1.1                                  
       Compiling volatile-register v0.2.0                              
       Compiling efm32gg11b820 v0.2.0 (file:///home/alex/code/crawford/efm32gg11b820)
      time: 5.444; rss: 1183MB      parsing                            
      time: 0.000; rss: 1183MB      recursion limit                 
      time: 0.000; rss: 1183MB      crate injection                      
      time: 0.000; rss: 1183MB      plugin loading
      time: 0.000; rss: 1183MB      plugin registration
      time: 2.094; rss: 1403MB      expansion
      time: 0.000; rss: 1403MB      maybe building test harness
      time: 0.103; rss: 1403MB      maybe creating a macro crate
      time: 0.329; rss: 1403MB      creating allocators
      time: 0.114; rss: 1403MB      AST validation
      time: 1.686; rss: 1639MB      name resolution
      time: 0.794; rss: 1639MB      complete gated feature checking
      time: 1.511; rss: 2054MB      lowering ast -> hir
      time: 0.437; rss: 2060MB      early lint checks
      time: 1.624; rss: 2145MB      indexing hir
      time: 0.000; rss: 1342MB      load query result cache
      time: 0.000; rss: 1342MB      looking for entry point
      time: 0.005; rss: 1342MB      looking for plugin registrar
      time: 0.097; rss: 1342MB      loop checking
      time: 0.056; rss: 1342MB      static item recursion checking
      time: 0.121; rss: 1422MB      attribute checking
      time: 0.283; rss: 1438MB      stability checking
      time: 2.357; rss: 1858MB      type collecting
      time: 0.034; rss: 1858MB      outlives testing
      time: 0.148; rss: 1859MB      impl wf inference
      time: 8.209; rss: 1869MB      coherence checking
      time: 0.035; rss: 1869MB      variance testing
      time: 4.094; rss: 2237MB      wf checking
      time: 0.725; rss: 2265MB      item-types checking
      time: 20.513; rss: 3064MB     item-bodies checking
      time: 3.108; rss: 3234MB      const checking
      time: 1.842; rss: 3252MB      privacy checking
      time: 0.161; rss: 3252MB      intrinsic checking
      time: 0.656; rss: 3258MB      match checking
      time: 0.280; rss: 3258MB      liveness checking
      time: 15.996; rss: 3936MB     borrow checking
      time: 0.154; rss: 3965MB      MIR borrow checking
      time: 0.075; rss: 3965MB      MIR effect checking
      time: 0.950; rss: 3979MB      death checking
      time: 0.000; rss: 3979MB      unused lib feature checking
      time: 3.065; rss: 3979MB      lint checking
      time: 0.000; rss: 3979MB      resolving dependency formats
        time: 33.326; rss: 4240MB   write metadata
        time: 1.189; rss: 4247MB    translation item collection
        time: 0.158; rss: 4263MB    codegen unit partitioning
        time: 0.039; rss: 4269MB    llvm function passes [efm32gg11b82015]
        time: 0.016; rss: 4269MB    llvm module passes [efm32gg11b82015]
        time: 0.050; rss: 4276MB    llvm function passes [efm32gg11b8200]
        time: 0.016; rss: 4278MB    llvm module passes [efm32gg11b8200]
        time: 0.047; rss: 4286MB    llvm function passes [efm32gg11b8201]
        time: 0.015; rss: 4287MB    llvm module passes [efm32gg11b8201]
        time: 0.989; rss: 4289MB    codegen passes [efm32gg11b82015]
        time: 0.052; rss: 4291MB    llvm function passes [efm32gg11b8202]
        time: 0.012; rss: 4291MB    llvm module passes [efm32gg11b8202]
        time: 0.965; rss: 4286MB    codegen passes [efm32gg11b8200]
        time: 0.043; rss: 4287MB    llvm function passes [efm32gg11b8203]
        time: 0.014; rss: 4287MB    llvm module passes [efm32gg11b8203]
        time: 0.984; rss: 4285MB    codegen passes [efm32gg11b8201]
        time: 0.044; rss: 4287MB    llvm function passes [efm32gg11b8204]
        time: 0.014; rss: 4288MB    llvm module passes [efm32gg11b8204]
        time: 0.756; rss: 4285MB    codegen passes [efm32gg11b8202]
        time: 0.034; rss: 4293MB    llvm function passes [efm32gg11b8205]
        time: 0.011; rss: 4293MB    llvm module passes [efm32gg11b8205]
        time: 0.745; rss: 4292MB    codegen passes [efm32gg11b8203]
        time: 0.068; rss: 4295MB    llvm function passes [efm32gg11b8206]
        time: 0.025; rss: 4296MB    llvm module passes [efm32gg11b8206]
        time: 0.750; rss: 4294MB    codegen passes [efm32gg11b8204]
        time: 0.033; rss: 4295MB    llvm function passes [efm32gg11b8207]
        time: 0.009; rss: 4296MB    llvm module passes [efm32gg11b8207]
        time: 0.614; rss: 4291MB    codegen passes [efm32gg11b8205]
        time: 0.038; rss: 4298MB    llvm function passes [efm32gg11b8208]
        time: 0.009; rss: 4299MB    llvm module passes [efm32gg11b8208]
        time: 0.550; rss: 4296MB    codegen passes [efm32gg11b8206]
        time: 0.466; rss: 4288MB    codegen passes [efm32gg11b8207]
        time: 0.036; rss: 4288MB    llvm function passes [efm32gg11b8209]
        time: 0.013; rss: 4288MB    llvm module passes [efm32gg11b8209]
        time: 0.031; rss: 4295MB    llvm function passes [efm32gg11b82010]
        time: 0.010; rss: 4297MB    llvm module passes [efm32gg11b82010]
        time: 0.489; rss: 4291MB    codegen passes [efm32gg11b8208]
        time: 0.027; rss: 4290MB    llvm function passes [efm32gg11b82011]
        time: 0.007; rss: 4290MB    llvm module passes [efm32gg11b82011]
        time: 0.586; rss: 4294MB    codegen passes [efm32gg11b8209]
        time: 0.035; rss: 4294MB    llvm function passes [efm32gg11b82012]
        time: 0.009; rss: 4295MB    llvm module passes [efm32gg11b82012]
        time: 0.541; rss: 4293MB    codegen passes [efm32gg11b82010]
        time: 0.405; rss: 4285MB    codegen passes [efm32gg11b82011]
        time: 0.031; rss: 4286MB    llvm function passes [efm32gg11b82013]
        time: 0.008; rss: 4286MB    llvm module passes [efm32gg11b82013]
        time: 5.038; rss: 4289MB    translate to LLVM IR
        time: 0.002; rss: 4289MB    assert dep graph
        time: 0.004; rss: 4289MB    serialize dep graph
      time: 41.187; rss: 4289MB     translation
        time: 0.027; rss: 4292MB    llvm function passes [efm32gg11b82014]
        time: 0.013; rss: 4292MB    llvm module passes [efm32gg11b82014]
        time: 0.454; rss: 4287MB    codegen passes [efm32gg11b82012]
        time: 0.446; rss: 3742MB    codegen passes [efm32gg11b82013]
        time: 0.413; rss: 3439MB    codegen passes [efm32gg11b82014]
      time: 5.297; rss: 3423MB      LLVM passes
      time: 0.000; rss: 619MB       serialize work products
      time: 0.120; rss: 551MB       linking
        Finished dev [unoptimized + debuginfo] target(s) in 121.48 secs
    
    nix-shell --packages '(rustChannelOf{ date = "2018-01-28"; channel = "nightly"; }).rust' --run 'rustc --version; cargo clean; export CARGO_INCREMENTAL=0; cargo rustc -
    - -Ztime-passes'
    rustc 1.25.0-nightly (7d6e5b9da 2018-01-27)
       Compiling cortex-m v0.4.3
       Compiling bare-metal v0.1.1
       Compiling untagged-option v0.1.1
       Compiling vcell v0.1.0
       Compiling aligned v0.1.1
       Compiling volatile-register v0.2.0
       Compiling efm32gg11b820 v0.2.0 (file:///home/alex/code/crawford/efm32gg11b820)
      time: 5.846; rss: 1183MB      parsing
      time: 0.000; rss: 1183MB      recursion limit
      time: 0.000; rss: 1183MB      crate injection
      time: 0.000; rss: 1183MB      plugin loading
      time: 0.000; rss: 1183MB      plugin registration
      time: 2.104; rss: 1404MB      expansion
      time: 0.000; rss: 1404MB      maybe building test harness
      time: 0.097; rss: 1404MB      maybe creating a macro crate
      time: 0.332; rss: 1404MB      creating allocators
      time: 0.121; rss: 1404MB      AST validation
      time: 1.712; rss: 1639MB      name resolution
      time: 0.725; rss: 1639MB      complete gated feature checking
      time: 1.519; rss: 2054MB      lowering ast -> hir
      time: 0.459; rss: 2061MB      early lint checks
      time: 1.674; rss: 2145MB      indexing hir
      time: 0.000; rss: 1342MB      load query result cache
      time: 0.000; rss: 1342MB      looking for entry point
      time: 0.008; rss: 1342MB      looking for plugin registrar
      time: 0.137; rss: 1342MB      loop checking
      time: 0.078; rss: 1342MB      static item recursion checking
      time: 0.151; rss: 1422MB      attribute checking
      time: 0.407; rss: 1439MB      stability checking
      time: 2.691; rss: 1858MB      type collecting
      time: 0.054; rss: 1858MB      outlives testing
      time: 0.190; rss: 1859MB      impl wf inference
      time: 11.854; rss: 1869MB     coherence checking
      time: 0.033; rss: 1869MB      variance testing
      time: 4.392; rss: 2237MB      wf checking
      time: 0.716; rss: 2265MB      item-types checking
      time: 20.862; rss: 3065MB     item-bodies checking
      time: 3.113; rss: 3234MB      const checking
      time: 1.862; rss: 3252MB      privacy checking
      time: 0.159; rss: 3252MB      intrinsic checking
      time: 0.672; rss: 3258MB      match checking
      time: 0.274; rss: 3258MB      liveness checking
      time: 1733.265; rss: 3936MB   borrow checking
      time: 0.150; rss: 3965MB      MIR borrow checking
      time: 0.072; rss: 3965MB      MIR effect checking
      time: 0.943; rss: 3979MB      death checking
      time: 0.000; rss: 3979MB      unused lib feature checking
      time: 3.108; rss: 3979MB      lint checking
      time: 0.000; rss: 3979MB      resolving dependency formats
        time: 36.893; rss: 4239MB   write metadata
        time: 1.178; rss: 4246MB    translation item collection
        time: 0.165; rss: 4262MB    codegen unit partitioning
        time: 0.032; rss: 4268MB    llvm function passes [efm32gg11b82015]
        time: 0.010; rss: 4269MB    llvm module passes [efm32gg11b82015]
        time: 0.049; rss: 4276MB    llvm function passes [efm32gg11b8200]
        time: 0.016; rss: 4277MB    llvm module passes [efm32gg11b8200]
        time: 0.046; rss: 4286MB    llvm function passes [efm32gg11b8201]
        time: 0.016; rss: 4287MB    llvm module passes [efm32gg11b8201]
        time: 0.833; rss: 4291MB    codegen passes [efm32gg11b82015]
        time: 0.043; rss: 4293MB    llvm function passes [efm32gg11b8202]
        time: 0.013; rss: 4293MB    llvm module passes [efm32gg11b8202]
        time: 0.943; rss: 4295MB    codegen passes [efm32gg11b8200]
        time: 0.041; rss: 4298MB    llvm function passes [efm32gg11b8203]
        time: 0.014; rss: 4300MB    llvm module passes [efm32gg11b8203]
        time: 0.850; rss: 4294MB    codegen passes [efm32gg11b8201]
        time: 0.046; rss: 4297MB    llvm function passes [efm32gg11b8204]
        time: 0.014; rss: 4298MB    llvm module passes [efm32gg11b8204]
        time: 0.707; rss: 4288MB    codegen passes [efm32gg11b8202]
        time: 0.034; rss: 4300MB    llvm function passes [efm32gg11b8205]
        time: 0.012; rss: 4301MB    llvm module passes [efm32gg11b8205]
        time: 0.709; rss: 4299MB    codegen passes [efm32gg11b8203]
        time: 0.033; rss: 4301MB    llvm function passes [efm32gg11b8206]
        time: 0.009; rss: 4302MB    llvm module passes [efm32gg11b8206]
        time: 0.669; rss: 4297MB    codegen passes [efm32gg11b8204]
        time: 0.031; rss: 4300MB    llvm function passes [efm32gg11b8207]
        time: 0.009; rss: 4300MB    llvm module passes [efm32gg11b8207]
        time: 0.581; rss: 4299MB    codegen passes [efm32gg11b8205]
        time: 0.039; rss: 4299MB    llvm function passes [efm32gg11b8208]
        time: 0.009; rss: 4300MB    llvm module passes [efm32gg11b8208]
        time: 0.546; rss: 4297MB    codegen passes [efm32gg11b8206]
        time: 0.037; rss: 4306MB    llvm function passes [efm32gg11b8209]
        time: 0.481; rss: 4297MB    codegen passes [efm32gg11b8207]
        time: 0.011; rss: 4295MB    llvm module passes [efm32gg11b8209]
        time: 0.030; rss: 4303MB    llvm function passes [efm32gg11b82010]
        time: 0.010; rss: 4304MB    llvm module passes [efm32gg11b82010]
        time: 0.499; rss: 4296MB    codegen passes [efm32gg11b8208]
        time: 0.026; rss: 4295MB    llvm function passes [efm32gg11b82011]
        time: 0.007; rss: 4296MB    llvm module passes [efm32gg11b82011]
        time: 0.611; rss: 4303MB    codegen passes [efm32gg11b8209]
        time: 0.033; rss: 4302MB    llvm function passes [efm32gg11b82012]
        time: 0.008; rss: 4303MB    llvm module passes [efm32gg11b82012]
        time: 0.549; rss: 4302MB    codegen passes [efm32gg11b82010]
        time: 0.425; rss: 4294MB    codegen passes [efm32gg11b82011]
        time: 0.034; rss: 4294MB    llvm function passes [efm32gg11b82013]
        time: 0.009; rss: 4294MB    llvm module passes [efm32gg11b82013]
        time: 4.866; rss: 4297MB    translate to LLVM IR
        time: 0.002; rss: 4297MB    assert dep graph
        time: 0.000; rss: 4297MB    serialize dep graph
      time: 44.560; rss: 4297MB     translation
        time: 0.043; rss: 4298MB    llvm function passes [efm32gg11b82014]
        time: 0.011; rss: 4299MB    llvm module passes [efm32gg11b82014]
        time: 0.448; rss: 4257MB    codegen passes [efm32gg11b82012]
        time: 0.444; rss: 3870MB    codegen passes [efm32gg11b82013]
        time: 0.406; rss: 3449MB    codegen passes [efm32gg11b82014]
      time: 5.143; rss: 3434MB      LLVM passes
      time: 0.000; rss: 629MB       serialize work products
      time: 0.110; rss: 560MB       linking
        Finished dev [unoptimized + debuginfo] target(s) in 1847.66 secs
    
  4. Mark-Simulacrum commented on Feb 12, 2018

    @Mark-Simulacrum
    Member

    I think I've heard reports elsewhere of similar slowdowns, but I can't seem to find anything right now. I tested on a Ubuntu 17.10 machine, so it's possible nix is somehow at fault here...

  5. crawford commented on Feb 12, 2018

    @crawford
    Author

    @Mark-Simulacrum Can you try testing with nightly-2018-01-28 (actually rustc 1.25.0-nightly (7d6e5b9da 2018-01-27))? That's the version where I start to see the failure.

  6. Mark-Simulacrum commented on Feb 12, 2018

    @Mark-Simulacrum
    Member

    Yes, I can now reproduce. Based on a quick inspection with gdp, I suspect #47420 is at fault -- I'm seeing CPU time mostly spent in memmove... called from syntax::codemap::CodeMap::find_width_of_character_at_span. I suspect the problem is the String allocations here: https://github.com/rust-lang/rust/pull/47420/files#diff-c5bde8c46eebaa8f5890c6f3700793b3R675.

  7. Mark-Simulacrum commented on Feb 12, 2018

    @Mark-Simulacrum
    Member
  8. crawford commented on Feb 12, 2018

    @crawford
    Author

    After testing in the Fedora container, I'm seeing similar performance so I think it's safe to rule out NixOS's packaging as a factor. Since the time to borrow check seems to be the issue, #47420 is the only change that seems relevant.

    Details
    export CARGO_INCREMENTAL=0; cargo clean && cargo +nightly-2018-01-27 rustc -- -Ztime-passes
       Compiling cortex-m v0.4.3
       Compiling bare-metal v0.1.1
       Compiling untagged-option v0.1.1
       Compiling aligned v0.1.1
       Compiling vcell v0.1.0
       Compiling volatile-register v0.2.0
       Compiling efm32gg11b820 v0.2.0 (file:///root/efm32gg11b820)
      time: 5.729; rss: 1183MB      parsing
      time: 0.000; rss: 1183MB      recursion limit
      time: 0.000; rss: 1183MB      crate injection
      time: 0.000; rss: 1183MB      plugin loading
      time: 0.000; rss: 1183MB      plugin registration
      time: 2.070; rss: 1404MB      expansion
      time: 0.000; rss: 1404MB      maybe building test harness
      time: 0.110; rss: 1404MB      maybe creating a macro crate
      time: 0.328; rss: 1404MB      creating allocators
      time: 0.109; rss: 1404MB      AST validation
      time: 1.656; rss: 1639MB      name resolution
      time: 0.758; rss: 1639MB      complete gated feature checking
      time: 1.495; rss: 2055MB      lowering ast -> hir
      time: 0.435; rss: 2061MB      early lint checks
      time: 1.623; rss: 2145MB      indexing hir
      time: 0.000; rss: 1344MB      load query result cache
      time: 0.000; rss: 1344MB      looking for entry point
      time: 0.008; rss: 1344MB      looking for plugin registrar
      time: 0.087; rss: 1344MB      loop checking
      time: 0.051; rss: 1343MB      static item recursion checking
      time: 0.125; rss: 1422MB      attribute checking
      time: 0.282; rss: 1438MB      stability checking
      time: 2.361; rss: 1858MB      type collecting
      time: 0.032; rss: 1858MB      outlives testing
      time: 0.143; rss: 1858MB      impl wf inference
      time: 7.993; rss: 1869MB      coherence checking
      time: 0.033; rss: 1869MB      variance testing
      time: 3.987; rss: 2232MB      wf checking
      time: 0.707; rss: 2259MB      item-types checking
      time: 20.370; rss: 3061MB     item-bodies checking
      time: 3.053; rss: 3231MB      const checking
      time: 1.815; rss: 3249MB      privacy checking
      time: 0.156; rss: 3249MB      intrinsic checking
      time: 0.668; rss: 3255MB      match checking
      time: 0.280; rss: 3255MB      liveness checking
      time: 16.005; rss: 3932MB     borrow checking
      time: 0.156; rss: 3961MB      MIR borrow checking
      time: 0.082; rss: 3961MB      MIR effect checking
      time: 0.934; rss: 3975MB      death checking
      time: 0.000; rss: 3975MB      unused lib feature checking
      time: 2.998; rss: 3976MB      lint checking
      time: 0.000; rss: 3976MB      resolving dependency formats
        time: 33.222; rss: 4244MB   write metadata
        time: 1.152; rss: 4251MB    translation item collection
        time: 0.158; rss: 4268MB    codegen unit partitioning
        time: 0.051; rss: 4273MB    llvm function passes [efm32gg11b82015]
        time: 0.026; rss: 4273MB    llvm module passes [efm32gg11b82015]
        time: 0.036; rss: 4280MB    llvm function passes [efm32gg11b8200]
        time: 0.019; rss: 4281MB    llvm module passes [efm32gg11b8200]
        time: 0.048; rss: 4295MB    llvm function passes [efm32gg11b8201]
        time: 0.020; rss: 4296MB    llvm module passes [efm32gg11b8201]
        time: 0.882; rss: 4294MB    codegen passes [efm32gg11b82015]
        time: 0.046; rss: 4299MB    llvm function passes [efm32gg11b8202]
        time: 0.016; rss: 4300MB    llvm module passes [efm32gg11b8202]
        time: 0.893; rss: 4292MB    codegen passes [efm32gg11b8200]
        time: 0.042; rss: 4297MB    llvm function passes [efm32gg11b8203]
        time: 0.025; rss: 4299MB    llvm module passes [efm32gg11b8203]
        time: 0.814; rss: 4291MB    codegen passes [efm32gg11b8201]
        time: 0.040; rss: 4298MB    llvm function passes [efm32gg11b8204]
        time: 0.015; rss: 4299MB    llvm module passes [efm32gg11b8204]
        time: 0.748; rss: 4294MB    codegen passes [efm32gg11b8202]
        time: 0.037; rss: 4308MB    llvm function passes [efm32gg11b8205]
        time: 0.020; rss: 4309MB    llvm module passes [efm32gg11b8205]
        time: 0.745; rss: 4305MB    codegen passes [efm32gg11b8203]
        time: 0.037; rss: 4302MB    llvm function passes [efm32gg11b8206]
        time: 0.010; rss: 4303MB    llvm module passes [efm32gg11b8206]
        time: 0.751; rss: 4300MB    codegen passes [efm32gg11b8204]
        time: 0.038; rss: 4300MB    llvm function passes [efm32gg11b8207]
        time: 0.009; rss: 4301MB    llvm module passes [efm32gg11b8207]
        time: 0.619; rss: 4301MB    codegen passes [efm32gg11b8205]
        time: 0.035; rss: 4303MB    llvm function passes [efm32gg11b8208]
        time: 0.019; rss: 4304MB    llvm module passes [efm32gg11b8208]
        time: 0.611; rss: 4302MB    codegen passes [efm32gg11b8206]
        time: 0.034; rss: 4303MB    llvm function passes [efm32gg11b8209]
        time: 0.013; rss: 4304MB    llvm module passes [efm32gg11b8209]
        time: 0.593; rss: 4304MB    codegen passes [efm32gg11b8207]
        time: 0.032; rss: 4304MB    llvm function passes [efm32gg11b82010]
        time: 0.014; rss: 4304MB    llvm module passes [efm32gg11b82010]
        time: 0.580; rss: 4303MB    codegen passes [efm32gg11b8208]
        time: 0.028; rss: 4301MB    llvm function passes [efm32gg11b82011]
        time: 0.010; rss: 4301MB    llvm module passes [efm32gg11b82011]
        time: 0.591; rss: 4301MB    codegen passes [efm32gg11b8209]
        time: 0.030; rss: 4305MB    llvm function passes [efm32gg11b82012]
        time: 0.011; rss: 4306MB    llvm module passes [efm32gg11b82012]
        time: 0.367; rss: 4307MB    codegen passes [efm32gg11b82011]
        time: 0.578; rss: 4297MB    codegen passes [efm32gg11b82010]
        time: 0.032; rss: 4300MB    llvm function passes [efm32gg11b82013]
        time: 0.012; rss: 4300MB    llvm module passes [efm32gg11b82013]
        time: 5.371; rss: 4305MB    translate to LLVM IR
        time: 0.000; rss: 4305MB    assert dep graph
        time: 0.000; rss: 4305MB    serialize dep graph
      time: 41.314; rss: 4305MB     translation
        time: 0.418; rss: 4297MB    codegen passes [efm32gg11b82012]
        time: 0.034; rss: 4296MB    llvm function passes [efm32gg11b82014]
        time: 0.016; rss: 4296MB    llvm module passes [efm32gg11b82014]
        time: 0.421; rss: 4141MB    codegen passes [efm32gg11b82013]
        time: 0.373; rss: 3692MB    codegen passes [efm32gg11b82014]
      time: 5.537; rss: 3617MB      LLVM passes
      time: 0.000; rss: 636MB       serialize work products
      time: 0.119; rss: 568MB       linking
        Finished dev [unoptimized + debuginfo] target(s) in 121.25 secs
    
    export CARGO_INCREMENTAL=0; cargo clean && cargo +nightly-2018-01-28 rustc -- -Ztime-passes
       Compiling untagged-option v0.1.1
       Compiling vcell v0.1.0
       Compiling aligned v0.1.1
       Compiling bare-metal v0.1.1
       Compiling cortex-m v0.4.3
       Compiling volatile-register v0.2.0
       Compiling efm32gg11b820 v0.2.0 (file:///root/efm32gg11b820)
      time: 5.959; rss: 1183MB      parsing
      time: 0.000; rss: 1183MB      recursion limit
      time: 0.000; rss: 1183MB      crate injection
      time: 0.000; rss: 1183MB      plugin loading
      time: 0.000; rss: 1183MB      plugin registration
      time: 2.029; rss: 1404MB      expansion
      time: 0.000; rss: 1404MB      maybe building test harness
      time: 0.098; rss: 1404MB      maybe creating a macro crate
      time: 0.314; rss: 1404MB      creating allocators
      time: 0.104; rss: 1404MB      AST validation
      time: 1.622; rss: 1639MB      name resolution
      time: 0.704; rss: 1639MB      complete gated feature checking
      time: 1.456; rss: 2055MB      lowering ast -> hir
      time: 0.421; rss: 2061MB      early lint checks
      time: 1.578; rss: 2146MB      indexing hir
      time: 0.000; rss: 1344MB      load query result cache
      time: 0.000; rss: 1344MB      looking for entry point
      time: 0.007; rss: 1344MB      looking for plugin registrar
      time: 0.085; rss: 1344MB      loop checking
      time: 0.048; rss: 1343MB      static item recursion checking
      time: 0.119; rss: 1422MB      attribute checking
      time: 0.275; rss: 1439MB      stability checking
      time: 2.313; rss: 1858MB      type collecting
      time: 0.030; rss: 1858MB      outlives testing
      time: 0.137; rss: 1858MB      impl wf inference
      time: 8.591; rss: 1869MB      coherence checking
      time: 0.031; rss: 1869MB      variance testing
      time: 4.028; rss: 2232MB      wf checking
      time: 0.715; rss: 2259MB      item-types checking
      time: 20.167; rss: 3061MB     item-bodies checking
      time: 3.028; rss: 3230MB      const checking
      time: 1.775; rss: 3248MB      privacy checking
      time: 0.152; rss: 3248MB      intrinsic checking
      time: 0.641; rss: 3255MB      match checking
      time: 0.264; rss: 3255MB      liveness checking
      time: 1795.120; rss: 3921MB   borrow checking
      time: 0.169; rss: 3950MB      MIR borrow checking
      time: 0.084; rss: 3948MB      MIR effect checking
      time: 1.005; rss: 3962MB      death checking
      time: 0.000; rss: 3962MB      unused lib feature checking
      time: 3.779; rss: 3962MB      lint checking
      time: 0.000; rss: 3962MB      resolving dependency formats
        time: 41.354; rss: 4213MB   write metadata
        time: 1.431; rss: 4200MB    translation item collection
        time: 0.169; rss: 4219MB    codegen unit partitioning
        time: 0.033; rss: 4235MB    llvm function passes [efm32gg11b82015]
        time: 0.019; rss: 4235MB    llvm module passes [efm32gg11b82015]
        time: 0.035; rss: 4245MB    llvm function passes [efm32gg11b8200]
        time: 0.019; rss: 4246MB    llvm module passes [efm32gg11b8200]
        time: 0.052; rss: 4264MB    llvm function passes [efm32gg11b8201]
        time: 0.016; rss: 4266MB    llvm module passes [efm32gg11b8201]
        time: 0.908; rss: 4254MB    codegen passes [efm32gg11b82015]
        time: 0.044; rss: 4257MB    llvm function passes [efm32gg11b8202]
        time: 0.013; rss: 4258MB    llvm module passes [efm32gg11b8202]
        time: 0.918; rss: 4252MB    codegen passes [efm32gg11b8200]
        time: 0.079; rss: 4257MB    llvm function passes [efm32gg11b8203]
        time: 0.055; rss: 4258MB    llvm module passes [efm32gg11b8203]
        time: 1.252; rss: 4257MB    codegen passes [efm32gg11b8201]
        time: 0.040; rss: 4259MB    llvm function passes [efm32gg11b8204]
        time: 0.013; rss: 4260MB    llvm module passes [efm32gg11b8204]
        time: 1.128; rss: 4255MB    codegen passes [efm32gg11b8202]
        time: 0.042; rss: 4265MB    llvm function passes [efm32gg11b8205]
        time: 0.013; rss: 4265MB    llvm module passes [efm32gg11b8205]
        time: 0.895; rss: 4266MB    codegen passes [efm32gg11b8203]
        time: 0.034; rss: 4264MB    llvm function passes [efm32gg11b8206]
        time: 0.011; rss: 4265MB    llvm module passes [efm32gg11b8206]
        time: 0.728; rss: 4262MB    codegen passes [efm32gg11b8204]
        time: 0.033; rss: 4263MB    llvm function passes [efm32gg11b8207]
        time: 0.011; rss: 4263MB    llvm module passes [efm32gg11b8207]
        time: 0.729; rss: 4265MB    codegen passes [efm32gg11b8205]
        time: 0.057; rss: 4269MB    llvm function passes [efm32gg11b8208]
        time: 0.029; rss: 4271MB    llvm module passes [efm32gg11b8208]
        time: 0.747; rss: 4262MB    codegen passes [efm32gg11b8206]
        time: 0.708; rss: 4261MB    codegen passes [efm32gg11b8207]
        time: 0.034; rss: 4257MB    llvm function passes [efm32gg11b8209]
        time: 0.009; rss: 4257MB    llvm module passes [efm32gg11b8209]
        time: 0.644; rss: 4258MB    codegen passes [efm32gg11b8208]
        time: 0.036; rss: 4256MB    llvm function passes [efm32gg11b82010]
        time: 0.010; rss: 4257MB    llvm module passes [efm32gg11b82010]
        time: 0.063; rss: 4261MB    llvm function passes [efm32gg11b82011]
        time: 0.021; rss: 4261MB    llvm module passes [efm32gg11b82011]
        time: 1.096; rss: 4261MB    codegen passes [efm32gg11b8209]
        time: 0.055; rss: 4262MB    llvm function passes [efm32gg11b82012]
        time: 0.017; rss: 4262MB    llvm module passes [efm32gg11b82012]
        time: 1.037; rss: 4264MB    codegen passes [efm32gg11b82010]
        time: 0.754; rss: 4257MB    codegen passes [efm32gg11b82011]
        time: 0.047; rss: 4258MB    llvm function passes [efm32gg11b82013]
        time: 0.011; rss: 4259MB    llvm module passes [efm32gg11b82013]
        time: 6.638; rss: 4262MB    translate to LLVM IR
        time: 0.572; rss: 4257MB    codegen passes [efm32gg11b82012]
        time: 0.005; rss: 4256MB    assert dep graph
        time: 0.000; rss: 4256MB    serialize dep graph
      time: 51.306; rss: 4255MB     translation
        time: 0.031; rss: 4255MB    llvm function passes [efm32gg11b82014]
        time: 0.010; rss: 4256MB    llvm module passes [efm32gg11b82014]
        time: 0.468; rss: 3666MB    codegen passes [efm32gg11b82013]
        time: 0.412; rss: 3411MB    codegen passes [efm32gg11b82014]
      time: 6.860; rss: 3395MB      LLVM passes
      time: 0.000; rss: 594MB       serialize work products
      time: 0.125; rss: 526MB       linking
        Finished dev [unoptimized + debuginfo] target(s) in 1911.58 secs
    
  9. added this to the 1.25 milestone on Feb 12, 2018
  10. estebank commented on Feb 12, 2018

    @estebank
    Contributor

    I suspect the problem is the String allocations

    @Mark-Simulacrum it seems to me like those could be &str instead...

  11. Mark-Simulacrum commented on Feb 12, 2018

    @Mark-Simulacrum
    Member

    Yep, I have a patch locally that seems to solve the problem by removing the allocation.

  12. added a commit that references this issue on Feb 13, 2018
    5b25477
  13. added
    C-enhancementCategory: An issue proposing an enhancement or a PR with one.
    on Feb 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-enhancementCategory: An issue proposing an enhancement or a PR with one.I-compiletimeIssue: Problems and improvements with respect to compile times.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions