benchmark.sh 971 B

1234567891011121314151617181920212223242526272829303132
  1. #!/bin/sh
  2. # Run every puzzle in benchmarking mode, and generate a file of raw
  3. # data that benchmark.pl will format into a web page.
  4. #
  5. # Expects to be run in the cmake build directory, where it can find
  6. # both the game binaries themselves and the file gamelist.txt that
  7. # lists them.
  8. # If any arguments are provided, use those as the list of games to
  9. # benchmark. Otherwise, read the full list from gamelist.txt.
  10. if test $# = 0; then
  11. set -- $(cat gamelist.txt)
  12. fi
  13. failures=false
  14. for game in "$@"; do
  15. # Use 'env -i' to suppress any environment variables that might
  16. # change the preset list for a puzzle (e.g. user-defined extras)
  17. presets=$(env -i ./$game --list-presets | cut -f1 -d' ')
  18. for preset in $presets; do
  19. if ! env -i ./$game --test-solve --time-generation \
  20. --generate 100 $preset;
  21. then
  22. echo "${game} ${preset} failed to generate" >&2
  23. fi
  24. done
  25. done
  26. if $failures; then exit 1; fi