Merge branch 'master' of github.com:poolifier/poolifier
[poolifier.git] / benchmarks / versus-external-pools / bench.sh
index 377a1a5bbda8fbcaea9e133d71924283964e241e..7d7e9651469252304dec4145adcb42c858f88bd6 100755 (executable)
@@ -1,21 +1,23 @@
 #!/usr/bin/env bash
 
-### The -t argument permit to specify the type of task that you want to benchmark.
-### Supported values are CPU_INTENSIVE, IO_INTENSIVE
-### The -s argument permit to specify the size of task that you want to benchmark.
-
 usage() {
-    echo "Usage: $0 [-t <CPU_INTENSIVE|IO_INTENSIVE>] [-s <number of tasks>]" 1>&2
+    echo "Usage: $0 [-s <pool size> -i <number of iterations> -t <CPU_INTENSIVE|IO_INTENSIVE>] [-n <number of tasks>]" 1>&2
     exit 1
 }
 
-while getopts "t:s:h" option
+while getopts "s:i:t:n:h" option
 do
   case "${option}" in
+    s)
+      poolSize=${OPTARG}
+      ;;
+    i)
+      iterations=${OPTARG}
+      ;;
     t)
       taskType=${OPTARG}
       ;;
-    s)
+    n)
       taskSize=${OPTARG}
       ;;
     :)
@@ -35,20 +37,21 @@ done
 
 taskType=${taskType:-'CPU_INTENSIVE'}
 taskSize=${taskSize:-5000}
+poolSize=${poolSize:-$(nproc --all)}
+iterations=${iterations:-100000}
 
-echo 'Running benchmarks for task type:' ${taskType} 'and task size:' ${taskSize}
+echo 'Running benchmarks with pool size:' ${poolSize}', number of iterations:' ${iterations}', task type:' ${taskType} 'and task size:' ${taskSize}
+export NODE_ENV=production
 export TASK_TYPE=${taskType}
 export TASK_SIZE=${taskSize}
-# Execute bench
-export NODE_ENV=production
-export POOL_SIZE=10
-export NUM_ITERATIONS=100000
+export POOL_SIZE=${poolSize}
+export NUM_ITERATIONS=${iterations}
 case "$OSTYPE" in
   darwin*)
     caffeinate ./hyperfine_benchmarks.sh
     ;;
   linux*)
-    systemd-inhibit ./hyperfine_benchmarks.sh
+    systemd-inhibit --what=idle ./hyperfine_benchmarks.sh
     ;;
   *)
     echo "Unsupported $OSTYPE"