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

Nikodemus Siivola via cfe-dev cfe-dev at lists.llvm.org
Thu Jun 8 00:50:33 PDT 2017


Aha! Release/bin has just llvm-lit.py in it, whereas Debug/bin has
everything. So not a release build after all.

$ grep CMAKE_BUILD_TYPE CMakeCache.txt
CMAKE_BUILD_TYPE:UNINITIALIZED=Release

...which seems odd both for claiming to be uninitialized and not matching
the binaries.

So I should delete that line and rebuild with

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo

?

Cheers,

 -- nikodemus


On Thu, Jun 8, 2017 at 8:36 AM, NAKAMURA Takumi <geek4civic at gmail.com>
wrote:

> I wonder you specified -DCMAKE_BUILD_TYPE=Release to Visual Studio
> Generator.
>
> Make sure;
> - Delete CMAKE_BUILD_TYPE
> - clang-cl.exe is generated as Release\bin\clang-cl.exe in your build tree.
>   Visual Studio (and msbuild.exe) has multiple configurations.
>
>
> On Thu, Jun 8, 2017 at 1:57 AM 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/20170608/ee51c88c/attachment.html>


More information about the cfe-dev mailing list