[cairo-commit] perf/cairo-perf-diff

Chris Wilson ickle at kemper.freedesktop.org
Wed Jul 1 01:58:55 PDT 2009


 perf/cairo-perf-diff |   51 ++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 36 insertions(+), 15 deletions(-)

New commits:
commit 3d88f99668308315db759af3dac789973caa8eae
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jul 1 09:57:56 2009 +0100

    [perf] Enable cairo-perf-trace in cairo-perf-diff
    
    Only as a --trace option for now.

diff --git a/perf/cairo-perf-diff b/perf/cairo-perf-diff
index 413ac45..f137111 100755
--- a/perf/cairo-perf-diff
+++ b/perf/cairo-perf-diff
@@ -32,6 +32,10 @@ Options:
 	With this option performance changes are summarized
 	as HTML table.
 
+-t, --trace
+	Compare performance using trace replays instead of
+	microbenchmarks.
+
 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
@@ -53,6 +57,7 @@ while true; do
     case $1 in
         -f|--force) force_cairo_perf="true";;
         -h|--html) html_output="true";;
+        -t|--trace) use_traces="true";;
         *) break;;
     esac
 
@@ -95,6 +100,7 @@ git_setup() {
 	CAIRO_DIR=`pwd`
     fi
     CAIRO_PERF_DIR=$CAIRO_DIR/.perf
+    export CAIRO_TRACE_DIR=$CAIRO_DIR/perf/cairo-traces
 }
 
 rev2sha() {
@@ -124,13 +130,15 @@ rev2perf() {
     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"
+    script_tree_sha=`rev2sha HEAD:util/cairo-script`
+    echo "$CAIRO_PERF_DIR/${sha}-${perf_tree_sha}-${script_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"
+    script_tree_sha=`rev2sha HEAD:util/cairo-script`
+    echo "$CAIRO_PERF_DIR/*-${perf_tree_sha}-${script_tree_sha}-${src_tree_sha}.perf"
 }
 
 build() {
@@ -146,24 +154,29 @@ build() {
     git checkout tmp-cairo-perf-diff
     git reset --hard $sha
 
+    for file in $boilerplate_files; do
+	rsync $CAIRO_DIR/$file boilerplate
+    done
+    for file in $perf_files; do
+	rsync $CAIRO_DIR/$file perf
+    done
+    for file in $script_files; do
+	rsync $CAIRO_DIR/$file util/cairo-script
+    done
+
     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
+	./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
+    make || (rm config.cache && make)
+    (cd boilerplate && make)
+
+    cd perf
+    make cairo-perf cairo-perf-trace
 }
 
 # Usage: run_cairo_perf_if_not_cached <rev> <suffix>
@@ -190,6 +203,7 @@ run_cairo_perf_if_not_cached() {
     cd $CAIRO_DIR
     boilerplate_files=`git ls-tree --name-only HEAD boilerplate/*`
     perf_files=`git ls-tree --name-only HEAD perf/*`
+    script_files=`git ls-tree --name-only HEAD util/cairo-script/*`
     cd $CAIRO_PERF_DIR
 
     build $build_dir $sha || {
@@ -197,9 +211,16 @@ run_cairo_perf_if_not_cached() {
 	build $build_dir $sha || exit 1
     }
 
-    echo "Running \"cairo-perf $CAIRO_PERF_OPTIONS\" against $rev. Results will be cached in:"
+    if [ "$use_traces" = "true" ]; then
+	cmd="cairo-perf-trace"
+    else
+	cmd="cairo-perf"
+    fi
+    echo "Running \"$cmd $CAIRO_PERF_OPTIONS\" against $rev. Results will be cached in:"
     echo "$perf"
-    (./cairo-perf $CAIRO_PERF_OPTIONS || echo "*** Performance test crashed") >> $perf
+    pwd
+    (./$cmd $CAIRO_PERF_OPTIONS || echo "*** Performance test crashed") >> $perf
+
     cd $owd
 }
 


More information about the cairo-commit mailing list