[gambit-list] Gambit Clang C/C++ status and compiler benchmarks?

Adam adam.mlmb at gmail.com
Sat May 5 13:06:34 EDT 2018


Hi Marc,

Wow, Clang is immensely slow indeed.

Do you have any idea if Clang's low performance could be circumvented using
Clang optimizer configuration, or, do you have any idea about qualities in
Clang's design that destine it to produce slow code for Gambit?

Maybe there could be a conversation with Clang to ask them to have a look
at why their compiler is performing so bad, maybe they would be interested
in speeding up things, I think overall they do have an ambition for high
performance.

Clang has become the bundled system-default C/C++/Objective C compiler for
a handful OS:es now, so there is a growing incentive to use it. All the
OS-bundled and packaged libraries on those platforms are Clang-compiled,
and mixing Clang- and GCC-compiled code (e.g. shared libraries) in one
executable, is not a very smooth experience today at least in my very
limited experience.

Would you be interested in crossposting an email to Clang's developer
mailing list (llvm-dev and maybe cfe-dev,
http://lists.llvm.org/mailman/listinfo) where you address Clang's
performance problem and suggest any reasons you see as plausible for why
they are so much after?

Adam


2018-05-05 20:17 GMT+08:00 Marc Feeley <feeley at iro.umontreal.ca>:

> GCC is still the best choice when compiling Gambit.
>
> When configured with the usual
>
>   ./configure --enable-single-host
>
> the build time of a “make -j8” on my 4 core laptop is over 10x slower when
> using CLANG.  As for speed of the generated code, CLANG produces code that
> is about 3x slower than GCC.
>
> Here are the raw results, in seconds:
>
>                     make -j8     test4
>  GCC 8.1.0           39.566      1.167
>  CLANG 802.0.38     426.371      4.229
>
> When configured with
>
>   ./configure --enable-single-host --enable-c-opt
>
> which uses -O2 rather than the default -O1, the results are also
> favourable for GCC.  However the build times are closer and, interestingly,
> both compilers generate slightly slower code with -O2:
>
>                     make -j8     test4
>  GCC 8.1.0          193.560      1.218
>  CLANG 802.0.38     229.945      4.410
>
> Marc
>
>
>
> > On May 5, 2018, at 5:54 AM, Adam <adam.mlmb at gmail.com> wrote:
> >
> > Hi list,
> >
> > So I think I figured out the answer myself.
> >
> > First, the previous benchmark that I recalled having read, is the "8)
> Performance of GCC and CLANG when compiling Gambit" section in Gambit's
> install.txt file (https://github.com/gambit/gambit/blob/
> edac3c75f0d93f4f56a39c2b90621511f096dd72/INSTALL.txt#L577).
> >
> > The essence here is that Clang 2.6, 2.7 and 2.8 wouldn't even compile
> Gambit, and 2.9-3.1 would compile Gambit but be fairly slow.
> >
> > A lot has happened since Clang 3.1, which is the last Clang version
> covered by install.txt today. The latest version today is 6.0. Ref.
> https://en.wikipedia.org/wiki/Clang#Status_history . Clang is now the
> default C/C++/Objective-C compiler choice in a handful operating systems,
> for AMD64 and some more architectures.
> >
> > Clang's language feature set is good, ref.
> https://en.cppreference.com/w/cpp/compiler_support ,
> https://clang.llvm.org/cxx_status.html .
> >
> > And Clang's speed is decent, recent benchmarks tend to find that Clang
> and GCC have a speed difference that's in the ballpark +-30%, up or down
> depending on benchmark, e.g. ref. https://stackoverflow.com/
> questions/3187414/clang-vs-gcc-which-produces-better-binaries#15043814 .
> >
> > The term "LLVM" only denotes that Clang has an internal intermediary
> language form, and the term LLVM has no other meaning in the direction of
> executable bytecode like Java JIT VM:s. I.e. Clang is only a native
> C/C++/Obj-C compiler. A list of the Clang/LLVM projects is on the main page
> at http://www.llvm.org/ .
> >
> > I have not tested yet but I do expect Clang to run Gambit stably and at
> a totally-okay speed.
> >
> > Adam
> >
> > 2018-05-05 16:13 GMT+08:00 Adam <adam.mlmb at gmail.com>:
> > Hi!
> >
> > Does Gambit work perfectly with the Clang C/C++ compiler (compiling to
> assembly which is compiled to native code, nothing LLVM), if so is it for
> all Gambit versions, or since when?
> >
> > I remember a benchmark of the time taken to, was it to compile
> Gambit-generated C code, or was it execution time of Gambit-C code as
> compiled by different GCC and Clang versions. What is the URL to that post
> in the mailing list archive?
> >
> > Thanks!
> > Adam
> >
> > _______________________________________________
> > Gambit-list mailing list
> > Gambit-list at iro.umontreal.ca
> > https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20180506/f7de8903/attachment.htm>


More information about the Gambit-list mailing list