[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 01:07:06 PDT 2017


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/20170608/29bbf3aa/attachment.html>


More information about the cfe-dev mailing list