From 79135c09fac78b01bde7335ed42d4275475501e5 Mon Sep 17 00:00:00 2001
From: Xavier L'Heureux <xavier.lheureux@icloud.com>
Date: Wed, 3 Jul 2019 13:08:55 -0400
Subject: [PATCH] Run one process per CPU

---
 tests/run_examples.sh | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tests/run_examples.sh b/tests/run_examples.sh
index 7bba463f..af4871ae 100755
--- a/tests/run_examples.sh
+++ b/tests/run_examples.sh
@@ -68,14 +68,17 @@ export TAGFAIL
 export TAGPASS
 export EXAMPLES_DIR
 
+# See https://prefetch.net/blog/2017/08/17/using-xargs-and-lscpu-to-spawn-one-process-per-cpu-core/
+CPU_CORES=$(lscpu -p=CORE,ONLINE | grep -c 'Y')
+
 # Build debug binary
 cargo +$TOOLCHAIN build
 # Iterate over every Ion script in examples directory
-ls -1 $EXAMPLES_DIR/*.ion | xargs -P 0 -n 1 -I {} bash -c "check_return_value {}"
+ls -1 $EXAMPLES_DIR/*.ion | xargs -P $CPU_CORES -n 1 -I {} bash -c "check_return_value {}"
 # Iterate over every parameter set
-ls -1 $EXAMPLES_DIR/*.params | xargs -P 0 -n 1 -I {} bash -c "test_cli {}"
+ls -1 $EXAMPLES_DIR/*.params | xargs -P $CPU_CORES -n 1 -I {} bash -c "test_cli {}"
 
 # Build debug binary for testing structopt argument parsing
 cargo +$TOOLCHAIN build --features=advanced_arg_parsing
 # Iterate over every parameter set
-ls -1 $EXAMPLES_DIR/*.params | xargs -P 0 -n 1 -I {} bash -c "test_cli {}"
+ls -1 $EXAMPLES_DIR/*.params | xargs -P $CPU_CORES -n 1 -I {} bash -c "test_cli {}"
-- 
GitLab