Linking is a single-threaded task it does not effectively utilize multicore processors. By changing matrix_build.py to instead create N projects which each will build a solution in parallel we can avoid the single-core linking bottleneck. This scales very well with the number of processors. Building mksgenlv21:
Host
old time
new time
Personal server (N=40)
30m23s
6m29s
Laptop (N=8)
14m10s
6m54s
Our current GitHub Actions workflow only runs on dual core machines (N=2), so the speedup is marginal (but tangible) but this prepares us well for if we want to run the build process on a more powerful CI.
matrix_build.py
to instead create N projects which each will build a solution in parallel we can avoid the single-core linking bottleneck. This scales very well with the number of processors. Buildingmksgenlv21
: