Skip to content

CI: Enable unity build for MRVoxels - #6946

Merged
oitel merged 7 commits into
masterfrom
feature/mrvoxels_unity_build
Sep 30, 2026
Merged

oitel merged 7 commits into
masterfrom
feature/mrvoxels_unity_build

Conversation

@oitel

@oitel oitel commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@Fedr

This comment was marked as resolved.

Comment thread source/MRVoxels/CMakeLists.txt Outdated
Signed-off-by: Artur Sharafutdinov <artur.sharafutdinov@meshinspector.com>
@Fedr

Fedr commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

Build-step timings: this PR's 2 CI runs vs 4 master runs at the PR's merge base (12e6449, 59379aa, 5ec776c, 658f6ca). I only compared jobs that ran on the same CPU model (from the cpu_model line in each job log). The hosted x64 runners mix at least 6 CPU models, so x64 runs on different CPUs can't be compared directly. All arm64 runners are Cobalt 100.

Job (CPU) this PR master Change
ubuntu22 arm64, g++-12 (Cobalt 100) 8.5, 8.8 m 9.5 – 10.5 m −14%
ubuntu24 arm64, g++-13 (Cobalt 100) 9.2, 9.0 10.2 – 10.7 −13%
ubuntu26 arm64, g++-15 (Cobalt 100) 9.4, 9.4 9.6 – 10.5 −8%
ubuntu26 arm64, g++-16 (Cobalt 100) 10.0, 9.7 11.0 – 11.4 −12%
linux-vcpkg Debug arm64, GCC 11 (Cobalt 100) 6.8, 6.6 7.2 – 8.4 −12%
linux-vcpkg Release arm64, Clang (Cobalt 100) 4.3, 4.0 4.6 – 4.8 −11%
emscripten Singlethreaded (Cobalt 100) 3.8, 3.7 4.1 – 4.5 −13%
emscripten Multithreaded (Cobalt 100) 3.9, 4.0 4.2 – 4.4 −7%
ubuntu26 x64, g++-16 (EPYC 7763) 14.9, 15.3 17.5, 17.8 −15%
Windows CMake arm64 (Cobalt 100) 13.3, 14.0 13.3 – 14.4 −2.5%
Windows MSBuild arm64 (Cobalt 100), no unity build: control 12.7, 13.5 12.5 – 13.7 −1%

On Linux and Emscripten this saves about 1 – 1.5 minutes per job. In almost every row, the slower PR run beats the fastest master run. The MSBuild control doesn't change, so it isn't a general runner difference.

On MSVC the gain is smaller. Locally (CMake + Ninja, Release, shared PCH), MRVoxels' summed compile time dropped by 39% with 4 batches, but its own wall-clock only by ~10%. The limit is MRFloatGrid.cpp alone, which takes ~38 s.

Suggestion: also enable unity build for MRVoxels in MRVoxels.vcxproj with <EnableUnitySupport>true</EnableUnitySupport>, as MeshLibC2.vcxproj already does for the C bindings. The MSBuild jobs are among the longest Windows jobs (x64 ~17 – 18 min). One trade-off: MSBuild is currently the only CI build of MRVoxels without unity build, so it's the only one that catches a missing #include that another file in the same batch hides.

@oitel
oitel merged commit 2008bfc into master Sep 30, 2026
54 of 57 checks passed
@oitel
oitel deleted the feature/mrvoxels_unity_build branch September 30, 2026 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants