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@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/ ).edac3c75f0d93f4f56a39c2b906215 11f096dd72/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@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@iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit- list