|
|
#!/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"
|
|
|
|
|
|
|
|
|
|