##// END OF EJS Templates
merge with stable
merge with stable

File last commit:

r20747:8c89433c default
r20829:9a09a625 merge default
Show More
revsetbenchmarks.sh
89 lines | 1.8 KiB | application/x-sh | BashLexer
#!/bin/bash
# Measure the performance of a list of revsets against multiple revisions
# defined by parameter. Checkout one by one and run perfrevset with every
# revset in the list to benchmark its performance.
#
# - First argument is a revset of mercurial own repo to runs against.
# - Second argument is the file from which the revset array will be taken
# If second argument is omitted read it from standard input
#
# You should run this from the root of your mercurial repository.
#
# This script also does one run of the current version of mercurial installed
# to compare performance.
HG="hg update"
PERF="./hg perfrevset"
BASE_PERF="hg perfrevset"
TARGETS=$1
shift
# read from a file or from standard output
if [ $# -ne 0 ]; then
readarray REVSETS < $1
else
readarray REVSETS
fi
hg update --quiet
echo "Starting time benchmarking"
echo
echo "Revsets to benchmark"
echo "----------------------------"
for (( j = 0; j < ${#REVSETS[@]}; j++ ));
do
echo "${j}) ${REVSETS[$j]}"
done
echo "----------------------------"
echo
# Benchmark baseline
echo "Benchmarking baseline"
for (( j = 0; j < ${#REVSETS[@]}; j++ ));
do
echo -n "${j}) "
$BASE_PERF "${REVSETS[$j]}"
done
echo
echo
# Benchmark revisions
for i in $(hg log --template='{rev}\n' --rev $TARGETS);
do
echo "----------------------------"
echo -n "Revision: "
hg log -r $i --template "{desc|firstline}"
echo "----------------------------"
$HG $i
for (( j = 0; j < ${#REVSETS[@]}; j++ ));
do
echo -n "${j}) "
$PERF "${REVSETS[$j]}"
done
echo "----------------------------"
done
$HG
# Benchmark current code
echo "Benchmarking current code"
for (( j = 0; j < ${#REVSETS[@]}; j++ ));
do
echo -n "${j}) "
$PERF "${REVSETS[$j]}"
done
echo
echo "Time benchmarking finished"