[cfe-dev] clang-cl.exe (32bit) dog slow, capping at ~16.5% CPU

Reid Kleckner via cfe-dev cfe-dev at lists.llvm.org
Wed Jun 7 13:55:11 PDT 2017


That's surprising, and not expected. Maybe it depends on what's in hello
world? stdio.h or boost?

I'd profile it and look at it in WPA:
https://randomascii.wordpress.com/2015/04/14/uiforetw-windows-performance-made-easier/
This could reveal bottlenecks unique to your system, like AV scanners,
network filesystems, or other weird things.

You'll need a PDB, though, to get anything useful out of it. You can either
re-configure and re-build with -DCMAKE_BUILD_TYPE=RelWithDebInfo, or you
can try hacking the VS solution to add "/DEBUG" to the clang.exe linker
options. Then it will only be a short re-link.

On Wed, Jun 7, 2017 at 12:57 PM, Nikodemus Siivola via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> One core out of eight sounds plausible indeed! Never thought of that, more
> used to *nix style usage numbers where 1.0 = one core. :)
>
> Did a release build:
>
>     cmake -G "Visual Studio 14 2015" \
>       -DCMAKE_INSTALL_PREFIX=C:\LLVM \
>       -DCMAKE_BUILD_TYPE=Release \
>       -DLLVM_TARGETS_TO_BUILD=X86 \
>       -DLLVM_ENABLE_CXX1Y=On \
>       ../
>
> That clang still takes >10s to build a hello-world.
>
> Any suggestions?
>
> Cheers,
>
>  -- nikodemus
>
>
> On Thu, Jun 1, 2017 at 6:11 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>>
>>
>> On Thu, Jun 1, 2017 at 12:48 AM Hahnfeld, Jonas via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>
>>> > cmake -G "MinGW Makefiles" \
>>>
>>>   -DCMAKE_INSTALL_PREFIX=C:\LLVM \
>>>
>>>   -DCMAKE_BUILD_TYPE=Debug \
>>>
>>>   -DLLVM_ENABLE_ASSERTIONS=On \
>>>
>>>   -DLLVM_TARGETS_TO_BUILD=X86 \
>>>
>>>   -DLLVM_ENABLE_CXX1Y=On \
>>>
>>>   ../
>>>
>>>
>>>
>>> CMAKE_BUILD_TYPE=Debug will result in a non-optimized compiler. Although
>>> I don’t have numbers at hand, you might want to set
>>> CMAKE_BUILD_TYPE=Release.
>>>
>>
>> Also  -DLLVM_ENABLE_ASSERTIONS=On
>>
>> The build system at some point had a warning informing users that this
>> might produce an order of magnitude (or more) slower compiler.
>>
>> I'd suggest you keep an optimized and unoptimized compiler around. Though
>> even then, Hello World doesn't take me 10 seconds to compile... so maybe
>> there's other things going on. Sounds like you'd want one set of LLVM stuff
>> with all the debugging knobs turned on (exactly as you've built) & use that
>> with your frontend, and another, release build, for running clang, etc for
>> practical porpoises.
>>
>>
>>
>>
>>>
>>>
>>> Regards,
>>>
>>> Jonas
>>>
>>>
>>>
>>> *From:* cfe-dev [mailto:cfe-dev-bounces at lists.llvm.org] *On Behalf Of *Nikodemus
>>> Siivola via cfe-dev
>>> *Sent:* Thursday, June 1, 2017 9:43 AM
>>> *To:* cfe-dev at lists.llvm.org
>>> *Subject:* [cfe-dev] clang-cl.exe (32bit) dog slow, capping at ~16.5%
>>> CPU
>>>
>>>
>>>
>>> I was wondering why compiles were so slow and noticed that clang-cl.exe
>>> is never consuming more than ~16.5% CPU on my laptop. This is an i7-7700HQ,
>>> 32GB memory, running Windows 10 Pro.
>>>
>>>
>>>
>>> Memory and disk use appear trivial as well, and the computer was
>>> otherwise mostly idle at the time.
>>>
>>>
>>>
>>> Compiling a trivial hello-world takes 11 seconds:
>>>
>>>
>>>
>>> $ clang --version
>>>
>>> clang version 4.0.1
>>>
>>> Target: i686-pc-windows-msvc
>>>
>>> Thread model: posix
>>>
>>> InstalledDir: C:\LLVM\bin
>>>
>>>
>>>
>>> $ cat foo.cpp
>>>
>>> #include <iostream>
>>>
>>>
>>>
>>> int main()
>>>
>>> {
>>>
>>>     std::cout << "Yo" << std::endl;
>>>
>>>     return 0;
>>>
>>> }
>>>
>>>
>>>
>>> $ time clang-cl foo.cpp
>>>
>>>
>>>
>>> real    0m11.886s
>>>
>>> user    0m0.015s
>>>
>>> sys     0m0.015s
>>>
>>>
>>>
>>> Compiling the same program under the Linux subsystem and clang-3.5 takes
>>> 0.16seconds. The Visual Studio commandline compiler is likewise almost
>>> instant.
>>>
>>>
>>>
>>> This is release_40 from one of the git mirrors, build built as part of
>>> the LLVM tree using Visual Studio 2015 command prompt, with (I think, not
>>> 100% sure, don't know cmake well enough to figure out after the fact) the
>>> following cmake invovations:
>>>
>>>
>>>
>>> cmake -G "MinGW Makefiles" \
>>>
>>>   -DCMAKE_INSTALL_PREFIX=C:\LLVM \
>>>
>>>   -DCMAKE_BUILD_TYPE=Debug \
>>>
>>>   -DLLVM_ENABLE_ASSERTIONS=On \
>>>
>>>   -DLLVM_TARGETS_TO_BUILD=X86 \
>>>
>>>   -DLLVM_ENABLE_CXX1Y=On \
>>>
>>>   ../
>>>
>>> cmake --build .
>>>
>>>
>>>
>>> Did I pick spectacularly stupid build options or something?
>>>
>>>
>>> Any suggestions for figuring out what is going on? (Windows is not my
>>> regular platform so I'm a bit out of depth here.)
>>>
>>> Cheers,
>>>
>>>
>>>
>>>  -- nikodemus
>>>
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170607/0bf381d4/attachment.html>


More information about the cfe-dev mailing list