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

John Sully via cfe-dev cfe-dev at lists.llvm.org
Wed Jun 7 15:54:02 PDT 2017


Having previous modified the generated projects before I highly advise
against it.  It's tedious, you have to get all of them, and cmake will blow
it away the next time you regenerate.  You are much better off using
RelWithDebugInfo.  Note that the last time I generated VS solutions it
generated all 3 and I could switch between them.  Check if you can just
switch your solution's configuration.

On Wed, Jun 7, 2017 at 1:55 PM, Reid Kleckner via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> 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
>>
>>
>
> _______________________________________________
> 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/bf87ccfa/attachment.html>


More information about the cfe-dev mailing list