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

Josh Stone via llvm-dev llvm-dev at lists.llvm.org
Fri May 8 16:40:44 PDT 2020


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.

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% )


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200508/94acab95/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: syn-e39d7fb4724c7e07.ll.xz
Type: application/x-xz
Size: 386252 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200508/94acab95/attachment-0001.bin>


More information about the llvm-dev mailing list