[Qbs] Qbs (way) faster than cmake (or benchmark issue)

resurrection at centrum.cz resurrection at centrum.cz
Mon Jul 22 09:57:36 CEST 2019


What is the reason for the difference between compiler calls with moc between Qbs and CMake/Ninja? It looks like Qbs is actually compiling the moc stuff separately while CMake/Ninja don't or rather they compile it as part of other sources somehow? It would explain both the longer time they take and the paralellism decline. At any rate that CMake/Ninja don't understand it could do it differently (more efficiently) is their flaw obviously.
 
More generally though one could argue that the comparison is not really fair since CMake is not a build system (unlike Qbs) but just a build generator so it naturally cannot do as much in optimizing builds as Qbs (or any actual build system) can. No matter how hard you would try doing "CMake project description -> Ninja makefiles -> Ninja build" will always be inferior to "Qbs project description -> Qbs build" beacuse of that translation layer.
 
Michael
 
______________________________________________________________
> Od: "Christian Gagneraud" <chgans at gmail.com>
> Komu: "qbs" <qbs at qt-project.org>
> Datum: 22.07.2019 01:00
> Předmět: Re: [Qbs] Qbs (way) faster than cmake (or benchmark issue)
>
On Tue, 16 Jul 2019 at 18:29, Christian Gagneraud <chgans at gmail.com> wrote:
 >
 > Hi there,
 >
 > I finally found time to start my qbs vs cmake build perf.
 >
 > What i found is that qbs beats cmake 'big time' on my build machine
 > and i was actually surprised, so surprised that i'm trying to find
 > where is the mistake.
 
 Here is a graph showing qtcreator build time vs number of parallel
 jobs, using cmake and qbs.
 
 Builds were done in a docker container (same for both), stock Ubuntu
 19.04/amd64, all dependencies (inc. qbs tool and dev libs) installed
 using apt.
 
 Number of compilations were measured by generating a Clang compilation
 database and counting the number of entries:
 cmake: 2881 (2869)
 qbs: 4362 (2848)
 
 The first number is the number of compiler calls, the second number if
 the same but ignoring the pattern 'moc_'.
 
 Using 2 jobs:
 qbs: 26:30.78
 cmake: 30:11.44
 =>Cmake is 15% slower than qbs
 
 Using 56 jobs:
 qbs: 2:35.95
 cmake: 4:33.79
 => CMake is 75% slower than bqs
 
 At the 20 jobs mark, cmake start to stagnate, whereas qbs still make
 use of parallelism, at the 30 jobs mark, cmake completely stopped
 reducing overall build time, whereas qbs start to stagnate. At the 40
 jobs mark, both systems are stale.
 
 Chris
 
 
 ----------
 
 _______________________________________________
 Qbs mailing list
 Qbs at qt-project.org
 https://lists.qt-project.org/listinfo/qbs <https://lists.qt-project.org/listinfo/qbs>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20190722/84a6c643/attachment-0001.html>


More information about the Qbs mailing list