[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake] CMake/Ninja support in Qt Creator
From:       Wouter van Kleunen <wouter.van () kleunen ! nl>
Date:       2012-09-25 6:09:13
Message-ID: 50614A89.7070308 () kleunen ! nl
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Also, the design goal of ninja was to build things "as fast as 
possible". And when "convenience and speed are in conflict, prefer speed."


Although I can't totally disagree with Loadens comment to keep it simple 
and your comment that the speed is reasonable now.


Op 24-9-2012 18:06, Wouter van Kleunen schreef:
>
> No, ninja is not really slow. Only when the filesystem caches are 
> cold, a no-op build does take a considerable time. So yeah, the 
> performance difference will not be very big when the caches are hot.
>
>
> Wouter
>
>
> Op 24-9-2012 11:17, Peter Kümmel schreef:
>> On 24.09.2012 11:04, Nils Gladitz wrote:
>>> When I tried with one of my larger projects the first no-op build after
>>> a full build took something between 20 and 30 seconds but no-op builds
>>> after that were below a second.
>>>
>>> I'm not really sure what would cause this (I guess disk or filesystem
>>> caching?).
>>
>> Yes, ninja needs to read a lot of files to check dependencies.
>>
>>>
>>> Nils
>>>
>>> On 09/24/2012 10:42 AM, Peter Kümmel wrote:
>>>> On 23.09.2012 15:04, Wouter van Kleunen wrote:
>>>>>
>>>>> I had the following idea to speed up the building even more, if a 
>>>>> tool
>>>>> can be build in ninja to list all files that need to be stat when
>>>>> building  a project. These files can be monitored by qtcreator and 
>>>>> later
>>>>> be provided as input again to ninja. So my idea works as follows:
>>>>>
>>>>> 1. Build project using cmake + ninja
>>>>> 2. Get file list of all dependencies by using ninja (something like
>>>>> ninja -t deplist).
>>>>> 3. Monitor the files using qt creator + qfilesystemwatcher
>>>>>
>>>>> When the user requests a rebuild:
>>>>> 4. Execute a ninja build command + provide the list of changed files.
>>>>> This way ninja won't have to stat any file.
>>>>> 5. Ninja builds
>>>>>
>>>>> Is this feasible ?
>>>>
>>>> I assume Qt Creator does it this way for qbs.
>>>> But for ninja this would be too much work.
>>>>
>>>> You think even ninja is too slow?
>>>>
>>>> Peter
>>>> -- 
>>>>
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the CMake FAQ at:
>>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.cmake.org/mailman/listinfo/cmake
>>>
>>>
>> -- 
>>
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at 
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the CMake FAQ at: 
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.cmake.org/mailman/listinfo/cmake
>
> -- 
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake


[Attachment #5 (text/html)]

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix"><br>
      Also, the design goal of ninja was to build things "as fast as
      possible". And <span style="color: rgb(0, 0, 0); font-family:
        serif; font-size: medium; font-style: normal; font-variant:
        normal; font-weight: normal; letter-spacing: normal;
        line-height: normal; orphans: 2; text-align: left; text-indent:
        0px; text-transform: none; white-space: normal; widows: 2;
        word-spacing: 0px; -webkit-text-size-adjust: auto;
        -webkit-text-stroke-width: 0px; display: inline !important;
        float: none; ">when "convenience and speed are in conflict,
        prefer speed."</span><br>
      <br>
      <br>
      Although I can't totally disagree with Loadens comment to keep it
      simple and your comment that the speed is reasonable now. <br>
      <br>
      <br>
      Op 24-9-2012 18:06, Wouter van Kleunen schreef:<br>
    </div>
    <blockquote cite="mid:50608521.2020301@kleunen.nl" type="cite">
      <br>
      No, ninja is not really slow. Only when the filesystem caches are
      cold, a no-op build does take a considerable time. So yeah, the
      performance difference will not be very big when the caches are
      hot.
      <br>
      <br>
      <br>
      Wouter
      <br>
      <br>
      <br>
      Op 24-9-2012 11:17, Peter K&uuml;mmel schreef:
      <br>
      <blockquote type="cite">On 24.09.2012 11:04, Nils Gladitz wrote:
        <br>
        <blockquote type="cite">When I tried with one of my larger
          projects the first no-op build after
          <br>
          a full build took something between 20 and 30 seconds but
          no-op builds
          <br>
          after that were below a second.
          <br>
          <br>
          I'm not really sure what would cause this (I guess disk or
          filesystem
          <br>
          caching?).
          <br>
        </blockquote>
        <br>
        Yes, ninja needs to read a lot of files to check dependencies.
        <br>
        <br>
        <blockquote type="cite">
          <br>
          Nils
          <br>
          <br>
          On 09/24/2012 10:42 AM, Peter K&uuml;mmel wrote:
          <br>
          <blockquote type="cite">On 23.09.2012 15:04, Wouter van
            Kleunen wrote:
            <br>
            <blockquote type="cite">
              <br>
              I had the following idea to speed up the building even
              more, if a tool
              <br>
              can be build in ninja to list all files that need to be
              stat when
              <br>
              building&nbsp; a project. These files can be monitored by
              qtcreator and later
              <br>
              be provided as input again to ninja. So my idea works as
              follows:
              <br>
              <br>
              1. Build project using cmake + ninja
              <br>
              2. Get file list of all dependencies by using ninja
              (something like
              <br>
              ninja -t deplist).
              <br>
              3. Monitor the files using qt creator + qfilesystemwatcher
              <br>
              <br>
              When the user requests a rebuild:
              <br>
              4. Execute a ninja build command + provide the list of
              changed files.
              <br>
              This way ninja won't have to stat any file.
              <br>
              5. Ninja builds
              <br>
              <br>
              Is this feasible ?
              <br>
            </blockquote>
            <br>
            I assume Qt Creator does it this way for qbs.
            <br>
            But for ninja this would be too much work.
            <br>
            <br>
            You think even ninja is too slow?
            <br>
            <br>
            Peter
            <br>
            --&nbsp;<br>
            <br>
            Powered by <a class="moz-txt-link-abbreviated" \
href="http://www.kitware.com">www.kitware.com</a>  <br>
            <br>
            Visit other Kitware open-source projects at
            <br>
            <a class="moz-txt-link-freetext" \
href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>
  <br>
            <br>
            Please keep messages on-topic and check the CMake FAQ at:
            <br>
            <a class="moz-txt-link-freetext" \
href="http://www.cmake.org/Wiki/CMake_FAQ">http://www.cmake.org/Wiki/CMake_FAQ</a>  \
<br>  <br>
            Follow this link to subscribe/unsubscribe:
            <br>
            <a class="moz-txt-link-freetext" \
href="http://www.cmake.org/mailman/listinfo/cmake">http://www.cmake.org/mailman/listinfo/cmake</a>
  <br>
          </blockquote>
          <br>
          <br>
        </blockquote>
        --&nbsp;<br>
        <br>
        Powered by <a class="moz-txt-link-abbreviated" \
href="http://www.kitware.com">www.kitware.com</a>  <br>
        <br>
        Visit other Kitware open-source projects at
        <a class="moz-txt-link-freetext" \
href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>
  <br>
        <br>
        Please keep messages on-topic and check the CMake FAQ at:
        <a class="moz-txt-link-freetext" \
href="http://www.cmake.org/Wiki/CMake_FAQ">http://www.cmake.org/Wiki/CMake_FAQ</a>  \
<br>  <br>
        Follow this link to subscribe/unsubscribe:
        <br>
        <a class="moz-txt-link-freetext" \
href="http://www.cmake.org/mailman/listinfo/cmake">http://www.cmake.org/mailman/listinfo/cmake</a>
  <br>
      </blockquote>
      <br>
      --
      <br>
      <br>
      Powered by <a class="moz-txt-link-abbreviated" \
href="http://www.kitware.com">www.kitware.com</a>  <br>
      <br>
      Visit other Kitware open-source projects at
      <a class="moz-txt-link-freetext" \
href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>
  <br>
      <br>
      Please keep messages on-topic and check the CMake FAQ at:
      <a class="moz-txt-link-freetext" \
href="http://www.cmake.org/Wiki/CMake_FAQ">http://www.cmake.org/Wiki/CMake_FAQ</a>  \
<br>  <br>
      Follow this link to subscribe/unsubscribe:
      <br>
      <a class="moz-txt-link-freetext" \
href="http://www.cmake.org/mailman/listinfo/cmake">http://www.cmake.org/mailman/listinfo/cmake</a>
  <br>
    </blockquote>
    <br>
  </body>
</html>



--

Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic