[llvm-dev] 7-8% compile time slowdowns in LLVM 10

Chris Lattner via llvm-dev llvm-dev at lists.llvm.org
Mon May 11 22:53:58 PDT 2020



> On May 8, 2020, at 4:40 PM, Josh Stone via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> On 4/14/20 1:26 AM, Neil Henning via llvm-dev wrote:
>> Hey list,
>> 
>> TL;DR - LLVM 10 is around 7-8% slower than LLVM 9 when compiling the same inputs.
>> 
>> [...] concerns from the Rust folks about LLVM 10's slowdowns [...]
> I'm one of those Rust folks, and in the last few days I've been trying to dig into this. I focused on one particular benchmark input -- I've attached that IR generated from Rust 1.43.0 for LLVM 9.0.1. I started running a git bisection to see if anything huge jumped out, but it seems to be gradual. Maybe others can take my input and find some pattern to the decline.
> 

Hi Josh,

On behalf of the “LLVM people”, I’d like to publicly thank you for the this work to make sure that LLVM compile time performance stays acceptable over time.  I think that the Rust community’s diligence in terms of tracking, improving, and publicizing compile time performance has been incredibly valuable.  Thank you,

-Chris


> My results below are with LLVM compiled from git on Fedora 32 with its Clang 10. My processor is a Ryzen 7 3800X. The command is just "perf stat -r5 bin/llc syn-*.ll". Let me know if I can provide more relevant details, but I hope this reproducible regardless, so others can investigate.
> 
> When we're tracking rustc performance, we usually focus on the instruction count, as it tends to be more stable for comparison.       Here I'm seeing 5.3% more instructions from 9.x to 10.x, and a further 4.8% from 10.x to master -- net 10.4% increase.
> 
> 
> 
> release/9.x (c1a0a213378a458fbea1a5c77b315c7dce08fd05)
> 
>  Performance counter stats for 'bin/llc syn-e39d7fb4724c7e07.ll' (5 runs):
> 
>           2,563.85 msec task-clock:u              #    0.998 CPUs utilized            ( +-  0.17% )
>                  0      context-switches:u        #    0.000 K/sec                  
>                  0      cpu-migrations:u          #    0.000 K/sec                  
>              8,739      page-faults:u             #    0.003 M/sec                    ( +-  0.07% )
>     10,952,672,891      cycles:u                  #    4.272 GHz                      ( +-  0.11% )  (83.32%)
>        539,233,453      stalled-cycles-frontend:u #    4.92% frontend cycles idle     ( +-  0.34% )  (83.32%)
>      1,066,121,274      stalled-cycles-backend:u  #    9.73% backend cycles idle      ( +-  0.53% )  (83.33%)
>     17,760,500,419      instructions:u            #    1.62  insn per cycle         
>                                                   #    0.06  stalled cycles per insn  ( +-  0.03% )  (83.34%)
>      3,792,956,022      branches:u                # 1479.398 M/sec                    ( +-  0.05% )  (83.35%)
>         98,635,111      branch-misses:u           #    2.60% of all branches          ( +-  0.19% )  (83.34%)
> 
>            2.56860 +- 0.00447 seconds time elapsed  ( +-  0.17% )
> 
> 
> release/10.x (eaae6dfc545000e335e6f89abb9c78818383d7ad)
> 
>  Performance counter stats for 'bin/llc syn-e39d7fb4724c7e07.ll' (5 runs):
> 
>           2,678.23 msec task-clock:u              #    0.998 CPUs utilized            ( +-  0.36% )
>                  0      context-switches:u        #    0.000 K/sec                  
>                  0      cpu-migrations:u          #    0.000 K/sec                  
>              8,761      page-faults:u             #    0.003 M/sec                    ( +-  0.07% )
>     11,427,954,987      cycles:u                  #    4.267 GHz                      ( +-  0.15% )  (83.32%)
>        538,556,528      stalled-cycles-frontend:u #    4.71% frontend cycles idle     ( +-  0.20% )  (83.33%)
>      1,149,190,672      stalled-cycles-backend:u  #   10.06% backend cycles idle      ( +-  0.55% )  (83.33%)
>     18,702,827,148      instructions:u            #    1.64  insn per cycle         
>                                                   #    0.06  stalled cycles per insn  ( +-  0.02% )  (83.34%)
>      3,988,324,508      branches:u                # 1489.164 M/sec                    ( +-  0.02% )  (83.35%)
>        103,988,578      branch-misses:u           #    2.61% of all branches          ( +-  0.11% )  (83.33%)
> 
>            2.68326 +- 0.00968 seconds time elapsed  ( +-  0.36% )
> 
> 
> master (a1ae9566ea9ce46bf7f2af9ab1253eed05b5b622)
> 
>  Performance counter stats for 'bin/llc syn-e39d7fb4724c7e07.ll' (5 runs):
> 
>           2,774.12 msec task-clock:u              #    0.998 CPUs utilized            ( +-  0.25% )
>                  0      context-switches:u        #    0.000 K/sec                  
>                  0      cpu-migrations:u          #    0.000 K/sec                  
>              8,957      page-faults:u             #    0.003 M/sec                    ( +-  0.07% )
>     11,864,439,510      cycles:u                  #    4.277 GHz                      ( +-  0.17% )  (83.33%)
>        546,052,536      stalled-cycles-frontend:u #    4.60% frontend cycles idle     ( +-  0.26% )  (83.33%)
>      1,157,735,744      stalled-cycles-backend:u  #    9.76% backend cycles idle      ( +-  0.54% )  (83.33%)
>     19,594,536,570      instructions:u            #    1.65  insn per cycle         
>                                                   #    0.06  stalled cycles per insn  ( +-  0.03% )  (83.34%)
>      4,187,308,178      branches:u                # 1509.418 M/sec                    ( +-  0.06% )  (83.35%)
>        105,573,875      branch-misses:u           #    2.52% of all branches          ( +-  0.27% )  (83.34%)
> 
>            2.77928 +- 0.00693 seconds time elapsed  ( +-  0.25% )
> 
> 
> <syn-e39d7fb4724c7e07.ll.xz>_______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200511/12713cc1/attachment.html>


More information about the llvm-dev mailing list