cubing / cubing.js

🛠 A library for displaying and working with twisty puzzles. Also currently home to the code for Twizzle.
https://js.cubing.net/cubing/
GNU General Public License v3.0
232 stars 42 forks source link

Parallelize `make test-all` #278

Open lgarron opened 1 year ago

lgarron commented 1 year ago

Right now, make test-all is serialized because we were limited by the generated string worker. Now that #214 is resolved we can probably parallelize a lot more. Ideally this should happen by default, but we need to make sure the output is possible to debug.

time make test-all # 49.77sec
time make -j16 test-all # 10.91sec

Challenges:

lgarron commented 1 year ago

Looks like some of the challenges would be solved by using the -O flag to make:

‘-O[type]’
‘--output-sync[=type]’
Ensure that the complete output from each recipe is printed in one uninterrupted sequence. This option is only useful when using the --jobs option to run multiple recipes simultaneously (see [Parallel Execution](https://www.gnu.org/software/make/manual/html_node/Parallel.html)) Without this option output will be displayed as it is generated by the recipes.

With no type or the type ‘target’, output from the entire recipe of each target is grouped together. With the type ‘line’, output from each line in the recipe is grouped together. With the type ‘recurse’, the output from an entire recursive make is grouped together. With the type ‘none’, no output synchronization is performed. See [Output During Parallel Execution](https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html).

https://www.gnu.org/software/make/manual/html_node/Options-Summary.html

… but this is not available on macOS. 😭