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

NAKAMURA Takumi via cfe-dev cfe-dev at lists.llvm.org
Thu Jun 8 15:51:50 PDT 2017


I recommend ninja.exe if you will not use IDE.
https://ninja-build.org/

On Fri, Jun 9, 2017 at 7:32 AM Nikodemus Siivola <nikodemus at random-state.net>
wrote:

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


More information about the cfe-dev mailing list