Add benchmark tests

This commit is contained in:
Jeffrey Walton 2016-09-30 16:58:27 -04:00
parent e2943d4530
commit fd64929389
No known key found for this signature in database
GPG Key ID: B36AB348921B1838

168
TestScripts/make-benchmarks.sh Executable file
View File

@ -0,0 +1,168 @@
#!/usr/bin/env bash
# make-benchmarks - Scan build submission instructions for Unix and Linux.
# Written and placed in public domain by Jeffrey Walton and Uri Blumenthal.
# Copyright assigned to Crypto++ project.
#
# The following builds the benchmarks under 5.6.2, 5.6.4 and Master. The results can then be
# compared to ensure an speed penalty is not inadvertently taken. Crypto++ 5.6.2 is significant
# because its the last version Wei worked on before turning the library over to the community.
###############################################################################
# Set to suite your taste. Speed is in GiHz
if [[ -z "$CPU_FREQ" ]]; then
if [[ ! -z "CRYPTOPP_CPU_SPEED" ]]; then
CPU_FREQ="$CRYPTOPP_CPU_SPEED"
else
CPU_FREQ=2.8
fi
fi
echo "***************************************************"
echo "Using CPU frequency of $CPU_FREQ GiHz."
echo "Please modify this script if its not correct"
echo
###############################################################################
current=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
git fetch --all &>/dev/null &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "$PWD does not appear to be a Git repository"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
###############################################################################
# Try to find a fast option
OPT=
if [[ -z "$OPT" ]]; then
rm -f "$TMP/adhoc.exe" &>/dev/null
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O3 adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
if [[ ("$?" -eq "0") ]]; then
OPT=-O3
fi
fi
if [[ -z "$OPT" ]]; then
rm -f "$TMP/adhoc.exe" &>/dev/null
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO3 adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
if [[ ("$?" -eq "0") ]]; then
OPT=-xO3
fi
fi
if [[ -z "$OPT" ]]; then
rm -f "$TMP/adhoc.exe" &>/dev/null
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O2 adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
if [[ ("$?" -eq "0") ]]; then
OPT=-O2
fi
fi
if [[ -z "$OPT" ]]; then
rm -f "$TMP/adhoc.exe" &>/dev/null
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO2 adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
if [[ ("$?" -eq "0") ]]; then
OPT=-xO2
fi
fi
if [[ -z "$OPT" ]]; then
rm -f "$TMP/adhoc.exe" &>/dev/null
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
if [[ ("$?" -eq "0") ]]; then
OPT=-O
fi
fi
##################################################################
echo "***************************************************"
echo "**************** Crypto++ 5.6.2 *******************"
echo "***************************************************"
echo
git checkout -f CRYPTOPP_5_6_2 &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git checkout CRYPTOPP_5_6_2 failed"
else
rm -f *.o benchmarks.html benchmarks-562.html &>/dev/null
CXXFLAGS="-DNDEBUG $OPT" make
if [[ "$?" -eq "0" ]]; then
echo "Running benchmarks for Crypto++ 5.6.2"
./cryptest.exe b 3 "$CPU_FREQ" > benchmarks-562.html
if [[ "$?" -ne "0" ]]; then
rm -rf benchmarks-562.html &>/dev/null
echo "Failed to create benchmarks for Crypto++ 5.6.2"
fi
else
echo "Failed to make benchmarks for Crypto++ 5.6.2"
fi
fi
##################################################################
echo "***************************************************"
echo "**************** Crypto++ 5.6.4 *******************"
echo "***************************************************"
echo
git checkout -f CRYPTOPP_5_6_4 &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git checkout CRYPTOPP_5_6_4 failed"
else
rm -f *.o benchmarks.html benchmarks-564.html &>/dev/null
CXXFLAGS="-DNDEBUG $OPT" make
if [[ "$?" -eq "0" ]]; then
echo "Running benchmarks for Crypto++ 5.6.4"
./cryptest.exe b 3 "$CPU_FREQ" > benchmarks-564.html
if [[ "$?" -ne "0" ]]; then
rm -rf benchmarks-564.html &>/dev/null
echo "Failed to create benchmarks for Crypto++ 5.6.4"
fi
else
echo "Failed to make benchmarks for Crypto++ 5.6.4"
fi
fi
##################################################################
echo "***************************************************"
echo "*************** Crypto++ Master *******************"
echo "***************************************************"
echo
git checkout -f master &>/dev/null
if [[ "$?" -ne "0" ]]; then
echo "git checkout master failed"
else
rm -f *.o benchmarks.html benchmarks-master.html &>/dev/null
CXXFLAGS="-DNDEBUG $OPT" make
if [[ "$?" -eq "0" ]]; then
echo "Running benchmarks for Crypto++ Master"
./cryptest.exe b 3 "$CPU_FREQ" > benchmarks-master.html
if [[ "$?" -ne "0" ]]; then
rm -rf benchmarks-master.html &>/dev/null
echo "Failed to create benchmarks for Crypto++ Master"
fi
else
echo "Failed to make benchmarks for Crypto++ Master"
fi
fi
##################################################################
if [[ ! -z "$current" ]]; then
git checkout -f "$current"
fi
[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0