[CMake] cmake script profiler
Jean-Christophe Fillion-Robin
jchris.fillionr at kitware.com
Wed Apr 24 17:43:08 EDT 2013
Hi,
If it turns out to be usefull for you. We could also consider creating a
dedicated github project to avoid code duplication. That way you would be
able to either add it as a git submodule to your project or checkout this
new small project at configure time [1]
Hth
Jc
[1]
http://cmake.3232098.n2.nabble.com/is-it-possible-to-download-CMake-modules-at-configure-time-td7583968.html
On Wed, Apr 24, 2013 at 5:32 PM, Volo Zyko <volo.zyko at gmail.com> wrote:
> Hi Jean-Christophe,
>
> Thanks for the suggestion. We'll definitely consider it.
>
> --
> Volo Zyko
>
> On Thu, Apr 25, 2013 at 12:23 AM, Jean-Christophe Fillion-Robin <
> jchris.fillionr at kitware.com> wrote:
>
>> Hi Volo,
>>
>> If you are doing some topological sorting to build your
>> library/executable in the right order. Instead of using CMake based
>> solution, you could may be rely on a C++ approach ? This is what we are
>> doing in CTK. We are using a small prog named ctkDependencyGraph that we
>> build at configure time.
>> See [1-4]
>>
>> [1]
>> http://www.commontk.org/index.php/Documentation/BuildSystem_Description
>> [2] https://github.com/commontk/CTK/blob/master/CMakeLists.txt#L691-717
>> [3]
>> https://github.com/commontk/CTK/blob/master/CMake/ctkFunctionGenerateDGraphInput.cmake
>> [4]
>> https://github.com/commontk/CTK/blob/master/CMake/ctkMacroValidateBuildOptions.cmake#L127-150
>>
>>
>>
>> On Wed, Apr 24, 2013 at 5:13 PM, Volo Zyko <volo.zyko at gmail.com> wrote:
>>
>>> We have executables and libraries and a lot of custom targets (the
>>> project is organized so that we export headers during the build - not the
>>> best idea in the world). However, I finished (more or less) the script for
>>> building time stats from the cmake's trace and we (with my colleague) found
>>> the slowest part. In our cmake scripts we have a bunch of sub-projects
>>> which produce libraries and also we have an utility function with which we
>>> define dependencies between those sub-projects. Then we define executables
>>> and build a list of libraries in a right order (from more dependent to less
>>> dependent) using sub-project's dependencies. This list is necessary for
>>> linking the executables. So, it appears that the slowest part is the
>>> function that builds the list of libraries. Basically there is nothing
>>> wrong with that cmake function, it just intensively works with strings. :(
>>>
>>> And here is where I put my script:
>>> https://code.google.com/p/cmake-profile-stats/ Comments are welcome.
>>>
>>> Also it looks like there are few bugs in the trace functionality of
>>> cmake; especially how callstack changes when cmake process foreach and
>>> if/else calls. I just didn't investigate them and I cannot provide more
>>> details. Sorry.
>>>
>>> --
>>> Volo Zyko
>>>
>>> On Wed, Apr 24, 2013 at 10:14 PM, Bill Hoffman <bill.hoffman at kitware.com
>>> > wrote:
>>>
>>>> On 4/24/2013 3:07 PM, Volo Zyko wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> We use Makefiles on Linux and MacOS. Windows is not our target
>>>>> platform.
>>>>> From what we see Linux is the fastest. We made few attempts of building
>>>>> our project on Windows in VS but it was very-very slow and definitely
>>>>> cmake generates too many project files for VS. For us it was 500+
>>>>> projects in a workspace which is too much for Visual Studio. :(
>>>>>
>>>> Chances are you have too many high level targets in your project. What
>>>> types of targets do you have? Are they all executables and libraries or
>>>> are you using custom targets to do something? That might be a source of
>>>> your performance issues as well.
>>>>
>>>> -Bill
>>>>
>>>>
>>>> --
>>>> Bill Hoffman
>>>> Kitware, Inc.
>>>> 28 Corporate Drive
>>>> Clifton Park, NY 12065
>>>> bill.hoffman at kitware.com
>>>> http://www.kitware.com
>>>> 518 881-4905 (Direct)
>>>> 518 371-3971 x105
>>>> Fax (518) 371-4573
>>>>
>>>> --
>>>>
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at http://www.kitware.com/**
>>>> opensource/opensource.html<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<http://www.cmake.org/Wiki/CMake_FAQ>
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.cmake.org/mailman/**listinfo/cmake<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
>>>
>>
>>
>>
>> --
>> +1 919 869 8849
>>
>
>
>
--
+1 919 869 8849
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130424/ec8c5b60/attachment-0001.htm>
More information about the CMake
mailing list