Why is lto/whole program mode not used in LLVM for peak performance
comparison? (of course, peak performance should really use FDO..)

thanks,

David

On Wed, Sep 7, 2011 at 8:15 AM, Vladimir Makarov <vmaka...@redhat.com> wrote:
>  Some people asked me to do comparison of  GCC-4.6 and LLVM-2.9 (both
> released this spring) as I did GCC-LLVM comparison in previous year.
>
>  You can find it on http://vmakarov.fedorapeople.org/spec under
> 2011 GCC-LLVM comparison tab entry.
>
>
>  This year the comparison is done on GCC 4.6 and LLVM 2.9 which were
> released in spring 2011.
>
>  As usually I am focused mostly on the compiler comparison
> as *optimizing* compilers on major platform x86/x86-64.  I don't
> consider other aspects of the compilers as quality of debug
> information, supported languages, standards and extensions (e.g. OMP),
> supported targets and ABI, support of just-in-time compilation etc.
>
>  Different to the 2010 comparison, the SPEC2000 benchmarks were run on
> a recent *Sandy Bridge processor* which will be a mainstream
> processor at least for the next year.
>
>  This year I tried to decrease the number of graphs which are still too
> many with my point of view.  Some graphs are bigger than for 2010
> comparison and oriented to screens with a larger resolution.  If you
> need exact numbers you should look at the tables from which the graphs
> were generated.
>
>  I added GCC run with -O1 which helps to understand
> that *LLVM with -O2 or -O3 is analog of GCC 4.1 with -O1
> with the point of view of generated code performance and
> compilation speed*.  People are frequently saying that LLVM is a much
> faster compiler than GCC.  That is probably not true.  If you need the same
> generated code quality and compilation speed as LLVM -O2/-O3
> you should use GCC with -O1.  If you want 10%-40% faster
> generated code, you should use GCC with -O2/-O3 and you need
> 20%-40% (150%-200% if you use GCC LTO) more time for compilation.  I
> believe that LLVM code performance is far away from GCC because
> it is sufficiently easy to get first percents of code improvement, it
> becomes much harder to get subsequent percents, and IMHO starting with
> some point of the development the relation of the code improvement to
> the spent efforts might become exponential.  So there is no magic --
> GCC has a better performance because much more efforts of experienced
> compiler developers have been spent and are being spent for GCC
> development than for LLVM.
>
>  The above said about compilation speed is true when GCC front-end is
> used for LLVM.  LLVM has another C-language family front-end called
> CLANG which can speed up compilation in optimization mode
> (-O2/-O3) upto 20%-25%.  So even as LLVM optimizations
> are not faster than GCC optimizations, CLANG front-end is really
> faster than GCC-frontend.  I think GCC community should pay more attention
> to this fact.  Fortunately, a few new GCC projects address to this problem
> and I hope this problem will be solved or alleviated.
>
>  This year I used -Ofast -flto -fwhole-program instead of
> -O3 for GCC and -O3 -ffast-math for LLVM for comparison of peak
> performance.  I could improve GCC performance even more by using
> other GCC possibilities (like support of AVX insns, Graphite optimizations
> and even some experimental stuff like LIPO) but I wanted to give LLVM
> some chances too.  Probably an experienced user in LLVM could improve
> LLVM performance too.  So I think it is a fair comparison.
>

Reply via email to