summaryrefslogtreecommitdiff
path: root/perf/cairo-perf-graph
diff options
context:
space:
mode:
Diffstat (limited to 'perf/cairo-perf-graph')
-rwxr-xr-xperf/cairo-perf-graph206
1 files changed, 0 insertions, 206 deletions
diff --git a/perf/cairo-perf-graph b/perf/cairo-perf-graph
deleted file mode 100755
index a167351fc..000000000
--- a/perf/cairo-perf-graph
+++ /dev/null
@@ -1,206 +0,0 @@
-#!/bin/sh
-set -e
-
-###
-### XXX Source common functions from cairo-perf-diff
-###
-
-usage() {
- argv0=`basename $0`
-
- cat >&2 << END
-Usage:
-As opposed to its sibling, cairo-perf-diff, cairo-perf-graph targets
-reviewing changes between series by graphically comparing the performance
-at each commit.
-
-The two revisions can be any revision accepted by git. For example:
-
- $argv0 1.2.0 1.2.4 # Compare performance of 1.2.0 to 1.2.4
-
-Options:
-
--f, --force
- Forces cairo-perf-diff to re-run performance tests
- even if cached performance data is available.
-
--h, --html
- With this option performance changes are summarized
- as HTML table.
-
-Additional options can be passed the child cairo-perf process
-by separating them with a double hyphen (--). For example, to
-examine what the impact of the latest change is on the stroke
-test you might use:
-
- $argv0 HEAD -- stroke
-
-The performance results are cached in .perf next to the .git directory.
-
-Set CAIRO_AUTOGEN_OPTIONS to pass options to autogen for both
-builds.
-END
-
- exit 1
-}
-
-# First, pull off any known options
-while true; do
- case $1 in
- -f|--force) force_cairo_perf="true";;
- -h|--html) html_output="true";;
- -s|--show) show_only="true";;
- *) break;;
- esac
-
- shift
-done
-
-# Then if anything is left that still looks like an option, (begins
-# with a dash), give usage to catch --help or any other -garbage
-if [ $# -eq 0 ] || [ "`echo "$1" | sed 's/^-//'`" != "$1" ]; then
- usage
-fi
-
-# Finally, pick up the actual revision arguments
-old="$1"
-new="$2"
-shift 2
-
-# And post-finally, pass anything after -- on to cairo-perf
-CAIRO_PERF_OPTIONS="-r -i 25"
-if [ $# -gt 0 ]; then
- if [ "$1" = "--" ]; then
- shift 1
- CAIRO_PERF_OPTIONS="$CAIRO_PERF_OPTIONS $@"
- else
- usage
- fi
-fi
-
-git_setup() {
- SUBDIRECTORY_OK='Yes'
- . "$(git --exec-path)/git-sh-setup"
- CAIRO_DIR=`dirname $GIT_DIR`
- if [ "$CAIRO_DIR" = "." ]; then
- CAIRO_DIR=`pwd`
- fi
- CAIRO_PERF_DIR=$CAIRO_DIR/.perf
-}
-
-rev2sha() {
- rev=$1
- git rev-parse --verify $rev || ( echo "Cannot resolve $rev as a git object" && exit 1 )
-}
-
-cpu_count() {
- test -f /proc/cpuinfo &&
- grep -c '^processor[[:blank:]]\+:' /proc/cpuinfo ||
- echo 1
-}
-
-# We cache performance output based on a two-part name capturing the
-# current performance test suite and the library being tested. We
-# capture these as the tree object of the perf directory in HEAD and
-# the tree object of the src directory of the revision being tested.
-#
-# This way, whenever the performance suite is updated, cached output
-# from old versions of the suite are automatically invalidated. Also,
-# if a commit just changes things outside of the src tree, (say it
-# changes the "test" test suite, or README or configure.in, or
-# whatever), cairo-perf-diff will be smart enough to still use cached
-# results from a run with an equivalent src tree.
-rev2perf() {
- rev=$1
- sha=`rev2sha $rev`
- src_tree_sha=`rev2sha $rev:src`
- perf_tree_sha=`rev2sha HEAD:perf`
- echo "$CAIRO_PERF_DIR/${sha}-${perf_tree_sha}-${src_tree_sha}.perf"
-}
-rev2perf_glob() {
- rev=$1
- src_tree_sha=`rev2sha $rev:src`
- perf_tree_sha=`rev2sha HEAD:perf`
- echo "$CAIRO_PERF_DIR/*-${perf_tree_sha}-${src_tree_sha}.perf"
-}
-
-# Usage: run_cairo_perf_if_not_cached <rev> <suffix>
-# The <rev> argument must be a valid git ref-spec that can
-# be resolved to a commit. The suffix is just something
-# unique so that build directories can be separated for
-# multiple calls to this function.
-run_cairo_perf_if_not_cached() {
- rev=$1
- build_dir="build-$2"
-
- owd=`pwd`
- sha=`rev2sha $rev`
- perf=`rev2perf $rev`
- glob=`rev2perf_glob $rev`
- if [ -e $glob ] && [ "$force_cairo_perf" != "true" ] || [ -n "$show_only" ]; then
- return 0
- fi
- if [ ! -d $CAIRO_PERF_DIR ]; then
- echo "Creating new perf cache in $CAIRO_PERF_DIR"
- mkdir $CAIRO_PERF_DIR
- fi
-
- cd $CAIRO_DIR
- boilerplate_files=`git ls-tree --name-only HEAD boilerplate/*`
- perf_files=`git ls-tree --name-only HEAD perf/*`
- cd $CAIRO_PERF_DIR
-
- if [ ! -d $build_dir ]; then
- git clone -s $CAIRO_DIR $build_dir
- (cd $build_dir; git checkout -b tmp-cairo-perf-diff $sha)
- fi
- cd $build_dir
-
- git checkout tmp-cairo-perf-diff
- git reset --hard $sha
-
- if [ -z "$MAKEFLAGS" ]; then
- CPU_COUNT=`cpu_count`
- export MAKEFLAGS="-j`expr $CPU_COUNT + 1`"
- fi
-
- if [ ! -e Makefile ]; then
- CFLAGS="-O2" ./autogen.sh $CAIRO_AUTOGEN_OPTIONS
- fi
- make CFLAGS="-O2" || (rm config.cache && make CFLAGS="-O2")
- for file in $boilerplate_files; do
- rsync $CAIRO_DIR/$file boilerplate
- done
- (cd boilerplate; make)
- for file in $perf_files; do
- rsync $CAIRO_DIR/$file perf
- done
- cd perf;
- make cairo-perf || exit 1
- echo "Running \"cairo-perf $CAIRO_PERF_OPTIONS\" against $rev. Results will be cached in:"
- echo "$perf"
- (./cairo-perf $CAIRO_PERF_OPTIONS || echo "*** Performance test crashed") >> $perf
- cd $owd
-}
-
-git_setup
-
-# Build cairo-perf-graph-files if not available
-if [ ! -e $CAIRO_DIR/perf/cairo-perf-graph-files ]; then
- echo "Building cairo-perf-graph-files"
- if [ "x$OS" = "xWindows_NT" ]; then
- make -f Makefile.win32 -C $CAIRO_DIR/perf/ cairo-perf-graph-files CFG=debug
- else
- make -C $CAIRO_DIR/perf/ cairo-perf-graph-files
- fi
-fi
-
-revs=""
-for rev in `git rev-list --reverse $old..$new`; do
- run_cairo_perf_if_not_cached $rev rev
- perf=`rev2perf $rev`
- [ -e "$perf" ] && revs="$revs $perf"
-done
-
-exec $CAIRO_DIR/perf/cairo-perf-graph-files $revs
-#exec $CAIRO_DIR/libtool --mode=execute gdb --args $CAIRO_DIR/perf/cairo-perf-graph-files $revs