Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| #!/bin/sh | |
| # This script runs the bench_decode program on all flac files in the | |
| # testsamples/extra directory, and collects the results. It expects a basename | |
| # for the output files. It is useful to use a directory plus a short identifier, | |
| # e.g. "measurements/baseline". Then after making a change, run this script with | |
| # "measurements/after" as basename. Results can be compared with the | |
| # compare_benches.r script. | |
| # Exit if any command fails. | |
| set -e | |
| if [ -z "$1" ]; then | |
| echo "You must provide a basename for the file to write the results to." | |
| exit 1 | |
| fi | |
| # Put the Git commit in the basename so I can cross-reference later. | |
| bname="$1_$(git rev-parse @ | cut -c 1-7)" | |
| # Disable automatic CPU frequency scaling to get lower variance measurements. | |
| if ! grep -q "performance" /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor; then | |
| echo "Locking CPU clock speed to its maximum. This requires root access." | |
| echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor > /dev/null | |
| fi | |
| # Optimize for the current CPU specifically, and include debugging symbols. | |
| export RUSTFLAGS="-C target-cpu=native -g" | |
| # Compile the benchmarking program. | |
| cargo build --release --example bench_decode | |
| for file in testsamples/extra/*.flac; do | |
| echo "Benchmarking ${file} ..." | |
| # Run the benchmarks with "taskset" to lock them to the same CPU core for the | |
| # entire program, to lower variance in the measurements. | |
| taskset -c 1 target/release/examples/bench_decode ${file} > "${bname}_$(basename ${file}).dat" | |
| done | |
| # Merge the output files. | |
| cat ${bname}_*.dat > "${bname}_all.dat" |