Build machines boasting
#1
I'd like people to contribute to this thread, telling us what their machine's specs are and how long it takes to build Cuberite on that machine (from scratch), plus what compiler they use. In the end, it might be a good benchmark for deciding what kind of hardware to get for upgrades (there are not too many compilation-related benchmarks in the real world).

The results
are in this Google Sheets document: https://docs.google.com/spreadsheets/d/1...sp=sharing



On Windows, use this script to measure the time (attached as timed_run.zip):
@echo off
echo Started: %time% > time.log
echo Cloning from git...
mkdir Cuberite
cd Cuberite
git clone --recurse-submodules https://github.com/cuberite/cuberite .
if errorlevel 1 goto Error
echo Cloned: %time% >> ..\time.log

echo Running CMake...
mkdir VS
cd VS
cmake -DBUILD_TOOLS=1 -DSELF_TEST=1 ..
if errorlevel 1 goto Error
echo CMaked: %time% >> ..\..\time.log

echo Building...
cmake --build .
if errorlevel 1 goto Error
cd ..\..
echo Built: %time% >> time.log
echo All done successfully
goto Finished

:Error
echo An error occurred, timings are invalid

:Finished

On Linux, try this script (courtesy of @paradise from Discord and @Mathias; attached as measure_time.zip):
#!/usr/bin/env bash

echo "Started: `date +%H:%M:%S`" > time.log
echo "Cloning from git..."
mkdir Cuberite
cd Cuberite
git clone --recurse-submodules https://github.com/cuberite/cuberite . || (echo 'An error occurred, timings are invalid' && exit 1)
echo "Cloned: `date +%H:%M:%S`" >> ../time.log

echo "Running CMake..."
mkdir VS
cd VS
cmake -DBUILD_TOOLS=1 -DSELF_TEST=1 .. || (echo 'An error occurred, timings are invalid' && exit 1)
echo "CMaked: `date +%H:%M:%S`" >> ../../time.log

echo "Building..."
MAKEFLAGS="" cmake --build . -j $(nproc) || (echo 'An error occurred, timings are invalid' && exit 1)
cd ../..
echo "Built: `date +%H:%M:%S`" >> time.log
echo "All done successfully"


Attached Files
.zip   timed_run.zip (Size: 420 bytes / Downloads: 266)
.zip   measure_time.zip (Size: 456 bytes / Downloads: 268)
Reply
Thanks given by:
#2
(desktop) AMD Ryzen7 2700 @ 3.2 GHz, DDR4 RAM 16 GiB @ 3200 MHz, CL14-14-14-28-42, Samsung 840Pro SATA SSD; Win8.1; MSVC 2017
CMake time: 01:52
Build time: 01:47

(desktop) Intel Core 2 Quad Q8300 @ 2.5 GHz, DDR3 RAM 8 GiB, Samsung 830Pro SATA SSD; Ubuntu 16.04 LTS; clang 3.8 (?)
CMake time: 00:24
Build time: 07:56

(laptop) Intel Mobile Core 2 Duo T9300 @ 2.5 GHz, DDR2 RAM 8 GiB @ 666 MHz, CL5-5-5-15, Samsung 830Pro SATA SSD; Win7; MSVC 2017
CMake time: 03:35
Build time: 10:39
Reply
Thanks given by:
#3
Intel Core i7 9750H @2.6 GHz (3.9Ghz Turbo in performance mode), 16 GB DDR4 @2667 MHz, 19-19-19-43-61 ; Windows 10: MSVC 2019

firrst build: Samsung 1TB NVMe SSD;
CMake time: 03:35
Build time: 1:55

second build: PNY 2TB NVMe SSD
CMake time: 03:37
Build time: 01:55

third build: Western Digital 2TB M.2 SATA SSD
CMake time: 03:34
Build time: 01:57
(Yes this laptop has three SSDs in it)

Fourth build: Same compiler as Laptop
CPU: Intel Xeon E3-1280v6, dual-threaded quad core, @ 3.9GHz (4.1 GHz Turbo)
RAM:  G.Skill Aegis 64GB DDR4 @ 2400 15-15-15-35-50(only about 4GB used for building as a rough estimate from windows gadget meter)
Storage: 2x 512GB Intel 660p NVMe SSD
Windows 7

CMake time: 01:33
Build time: 01:47
Reply
Thanks given by:
#4
Dang, the forum doesn't seem to be able to make tables Sad There goes my summary.
Reply
Thanks given by:
#5
(laptop) AMD Ryzen 5 3500U @ 2.1 GHz; DDR4 RAM 8 GB @ 2400 MHz; SAMSUNG MZVLB256HAHQ-000L2 SSD 256GB; Windows 10; MSVC 2019
CMake time: 4:51
Build time: 3:07
Reply
Thanks given by:
#6
(desktop)AMD Ryzen 7 3700X 8-Core (16 Threads), 3.6 GHz; 16 GiB RAM; Win10

MSVC 2019:
CMake: 1m 35s
Built: 1m 17s

(WSL-debian)GCC/G++-8.3:
CMaked: 36s
Built: 1m 18s


Corrected the linux shell script:
  • cmake --build used only one core, added j-flag and nproc to use all cores
  • Changed time output to e.g. 14:30:25
  • Added missing brackets, script would exit after git clone
Code:
#!/usr/bin/env bash

echo \'Started: `date +%H:%M:%S`\' > time.log
echo \'Cloning from git...\'
mkdir Cuberite
cd Cuberite
git clone --recurse-submodules https://github.com/cuberite/cuberite . || (echo \'An error occurred, timings are invalid\' && exit 1)
echo \'Cloned: `date +%H:%M:%S`\' >> ../time.log

echo \'Running CMake...\'
mkdir VS
cd VS
cmake -DBUILD_TOOLS=1 -DSELF_TEST=1 .. || (echo \'An error occurred, timings are invalid\' && exit 1)
echo \'CMaked: `date +%H:%M:%S`\' >> ../../time.log

echo \'Building...\'
cmake --build . -j $(nproc) || (echo \'An error occurred, timings are invalid\' && exit 1)
cd ../..
echo \'Built: `date +%H:%M:%S`\' >> time.log
echo \'All done successfully\'
sleep 5
Reply
Thanks given by:
#7
When using -j with cmake --build, I get way too many clang++ processes (tens of them, on my 4-core system), which end up contending for RAM, rather than CPU. The compilation time is worse then, and sometimes it even fails.
Reply
Thanks given by:
#8
Found out why. I have MAKEFLAGS="-j8" in my .profile , so any "make" invokation causes multiplied builds. Fixing the script to account for that...
Reply
Thanks given by:
#9
I've compiled the results into a Google docs sheet. Keep the results coming Smile Also, those already present, please try to provide the items missing in the report.
Reply
Thanks given by:




Users browsing this thread: 1 Guest(s)