[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 15:32:36 PDT 2017


Thank you for assistance!

I can confirm that

    cmake --build . --config Release

works. :)

Both Release and RelWithDebInfo builds work at reasonable speeds, even with
assertions enabled, so I'm a happy camper.

Cheers,

  -- nikodemus


On Thu, Jun 8, 2017 at 11:07 AM, Nikodemus Siivola <
nikodemus at random-state.net> wrote:

> cmake --build
>
> On 8 Jun 2017 11.05, "NAKAMURA Takumi" <geek4civic at gmail.com> wrote:
>
>> Which tool are you using? msbuild.exe, devenv.exe, or cmake.exe --build ?
>>
>> With cmake.exe, "cmake --config Release" would be available. (I haven't
>> tried)
>>
>> See also; http://bb.pgr.jp/builders/msbuild-llvmclang-x64-msc19-
>> DA/builds/2179/steps/build_llvm_tblgen/logs/stdio
>>
>> On Thu, Jun 8, 2017 at 4:56 PM Nikodemus Siivola <
>> nikodemus at random-state.net> wrote:
>>
>>> I've been building from the command line, the IDE is a foreign land to
>>> me, but I'll give it a try. :)
>>>
>>> Thanks!
>>>
>>> On 8 Jun 2017 10.53, "NAKAMURA Takumi" <geek4civic at gmail.com> wrote:
>>>
>>>> Assuming you are using Visual Studio IDE, choose build configuration in
>>>> toolbar and build again. Debug by default.
>>>> CMAKE_BUILD_TYPE should not be set for Visual Studio Generator.
>>>>
>>>> On Thu, Jun 8, 2017 at 4:50 PM Nikodemus Siivola <
>>>> nikodemus at random-state.net> wrote:
>>>>
>>>>> 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/20170609/68912b1a/attachment.html>


More information about the cfe-dev mailing list