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" <chg...@gmail.com>
Komu: "qbs" <qbs@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 <chg...@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@qt-project.org
https://lists.qt-project.org/listinfo/qbs 
<https://lists.qt-project.org/listinfo/qbs>

_______________________________________________
Qbs mailing list
Qbs@qt-project.org
https://lists.qt-project.org/listinfo/qbs

Reply via email to