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. Basically, qbs builds more stuff than cmake in less time (!?!) Build server: - Dual Xeon Gold 6132 - 256GB RAM - 2TB RAID-something SSD Total cores: 28, total threads: 56 $ time qbs -f ../qtcreator.qbs profile:qt-5-12-2 real 3m6.159s user 96m51.927s sys 19m52.059s $ du -sh 18G . $ find . -name '*.o' | wc -l 4917 $ find default/install-root/ -name '*.so' | wc -l 93 $ time cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS_DEBUG="-O0 -g" -G Ninja .. real 0m3.281s user 0m1.960s sys 0m1.327s $ time ninja real 4m51.174s user 70m58.028s sys 23m9.238s $ du -sh 4.9G . $ find . -name '*.o' | wc -l 2881 $ find . -name '*.so' | wc -l 88 The compiler flags are not the same, but not so far off: Qbs: -g -O0 -Wall -Wextra -m64 -pipe -fexceptions -fvisibility=hidden -fvisibility-inlines-hidden -fPIC CMake: -g -O0 -std=c++14 -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -fstack-protector-strong -Wformat -Wformat-security Qbs wall time: 3m6 CMake wall time: 4m54 Qbs CPU time = 97 + 20 = 107 minutes CMake CPU time = 71 + 23 = 94 minutes While it was building, htop showed that Qbs made a better CPU usage than CMake. Qbs tend to load all the CPU at maximum for almost the entire duration of the build while Cmake had lot of gaps in term of CPU usage. As well, somehow qbs did more stuff, since it populated the install-root, where-as cmake has a sort of "in-place" install-root (build dir is install-root) If i have more time, i would like to explore: - https://lists.qt-project.org/pipermail/qbs/2019-May/002408.html - https://lists.qt-project.org/pipermail/qbs/2019-May/002419.html - make a graph with build time vs job counts - add cold/warm ccache - use RAM disk for ccache store and build directory I did a similar benchmark for our project, it showed that our build system (qmake) was unable to cope with more than 6 cores, enabling dep tracking improved the situation but was still not scalable. CMake (+Ninja) is better than qmake, but i never ran a comparison with Qbs. Chris _______________________________________________ Qbs mailing list [email protected] https://lists.qt-project.org/listinfo/qbs
