| #!/usr/bin/env bash |
| # |
| # Runs all benchmarks. Controlled by the following environment variables: |
| # |
| # FEATURES={} - cargo features to pass to all benchmarks (e.g. core_arch,sleef-sys,ispc) |
| # NORUN={1} - only builds the benchmarks |
| |
| set -ex |
| |
| if [[ ${NORUN} != 1 ]]; then |
| # Most benchmarks require hyperfine; require it upfront. |
| hash hyperfine 2>/dev/null || { echo >&2 "hyperfine is not in PATH."; exit 1; } |
| fi |
| |
| |
| # If the ispc benchmark feature is enabled, ispc must be in the path of the |
| # benchmarks. |
| if echo "$FEATURES" | grep -q "ispc"; then |
| hash ispc 2>/dev/null || { echo >&2 "ispc is not in PATH."; exit 1; } |
| fi |
| |
| # An example with a benchmark.sh is a benchmark: |
| for dir in examples/*/ |
| do |
| dir=${dir%*/} |
| cd ${dir%*/} |
| if [ -f "benchmark.sh" ]; then |
| ./benchmark.sh |
| fi |
| cd - |
| done |
| |