Index: compiler/scripts/compiler_compare.sh |
diff --git a/compiler/scripts/compiler_compare.sh b/compiler/scripts/compiler_compare.sh |
deleted file mode 100755 |
index 911590e31cbc0e84d19b4dd0a6f61bd9c4ff9e1f..0000000000000000000000000000000000000000 |
--- a/compiler/scripts/compiler_compare.sh |
+++ /dev/null |
@@ -1,191 +0,0 @@ |
-#!/bin/bash |
-# |
-# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-# for details. All rights reserved. Use of this source code is governed by a |
-# BSD-style license that can be found in the LICENSE file. |
- |
-# Compare the current working copy of the repository to either a clean copy |
-# or the specified revision. |
-# Along with the files created by compiler_metrics.sh, creates |
-# compiler_compare[_stats_[12]].log in the working direcetory and a |
-# out_compile_samples/ directory at the root of the repository, |
-# which are left around for later examination. |
-# These files will be destroyed on script re-run. |
- |
-APP="" |
-REV="" |
-ONE_DELTA="" |
-BASE_PATH=$(pwd) |
-SCRIPT_PATH=$(dirname $0) |
-SCRIPT_PATH=$(cd $SCRIPT_PATH; pwd) |
-RUNS=10 |
- |
-function printHelp() { |
- exitValue=${1:1} |
- echo "Compare current changes as they relate to performance with another SVN revision" |
- echo "" |
- echo " Usage:" |
- echo " -a=, --app= The dart app file to test (required)." |
- echo " -d=, --one-delta= The filename, relative to app, to touch in order to trigger a one-delta compile." |
- echo " -r=, --revision= The compiler revision to compare against (default to current repository revision)." |
- echo " --runs= Number of runs to test with, default $RUNS" |
- echo " --stats Non-destructive display of previous stats" |
- echo " -h, --help What you see is what you get." |
- exit $exitValue |
-} |
- |
-function failTest() { |
- if [ ! $1 -eq 0 ]; then |
- echo $2 |
- exit $1 |
- fi |
-} |
- |
-if [ $# -eq 0 ]; then |
- printHelp; |
-fi |
- |
-for i in $* |
-do |
- case $i in |
- --one-delta=*|-d=*) |
- ONE_DELTA=${i#*=} |
- COMPARE_OPTIONS+="--one-delta=$ONE_DELTA ";; |
- --app=*|-a=*) |
- APP=${i#*=} |
- APP=$( cd "$( dirname "$APP" )" && pwd )/$( basename "$APP");; |
- --revision=*|-r=*) |
- REV=${i#*=};; |
- --help|-h) |
- printHelp 0;; |
- --runs=*) |
- RUNS=${i#*=};; |
- --stats) |
- calcStats |
- exit 0;; |
- *) |
- echo "Invalid parameter: $i" |
- printhelp 1;; |
- esac |
-done |
- |
-COMPARE_OPTIONS+="-r=$RUNS " |
- |
-if [ "" = "$APP" ] || [ ! -r $APP ]; then |
- echo "Required --app" |
- printHelp |
-fi |
- |
-RESPONSE[0]="Performance: Better" |
-RESPONSE[1]="Performance: No Change" |
-RESPONSE[2]="Performance: Worse" |
- |
-# Passed: MAX deviation, Changed Amount |
-# Returns: Index of RESPONSE |
-function responseValue() { |
- ABS=$2 |
- (( ABS = ABS < 0 ? ABS * -1 : ABS )) |
- if [ $ABS -gt $1 ]; then |
- if [ $2 -lt 0 ]; then |
- return 2 |
- else |
- return 0 |
- fi |
- fi |
- return 1 |
-} |
- |
-function calcStat() { |
- # Assume we're always making improvments, S2 will be presented as a larger value |
- LINEMATCH_DEV="s/${1}: .*stdev: \([0-9]*\).*/\1/p" |
- LINEMATCH_VALUE="s/${1}: average: \([0-9]*\).*/\1/p" |
- S1_DEV=$(sed -n -e "$LINEMATCH_DEV" $STAT1) |
- if [ "" != "$S1_DEV" ]; then |
- S2_DEV=$(sed -n -e "$LINEMATCH_DEV" $STAT2) |
- DEV_MAX=$(( S1_DEV < S2_DEV ? S2_DEV : S1_DEV )) |
- S1_VALUE=$(sed -n -e "$LINEMATCH_VALUE" $STAT1) |
- S2_VALUE=$(sed -n -e "$LINEMATCH_VALUE" $STAT2) |
- DIFF=$(( S2_VALUE - S1_VALUE )) |
- DIFF_PERCENT=`echo "$DIFF*100/$S2_VALUE" | bc -l | sed 's/\([0-9]*\.[0-9][0-9]\)[0-9]*/\1/'` |
- responseValue $DEV_MAX $DIFF |
- echo "$1: Before/After-ms(${S2_VALUE} / ${S1_VALUE}), stdev(${S2_DEV} / ${S1_DEV}), Difference: ${DIFF}ms (${DIFF_PERCENT}%), " ${RESPONSE[$?]} |
- fi |
- return 0 |
-} |
- |
-function calcStats() { |
- calcStat full-compile |
- calcStat zero-delta-compile |
- calcStat one-delta-compile |
-} |
- |
-ROOT_OF_REPO=$BASE_PATH |
-TEST_DIR=$BASE_PATH |
-while true; do |
- ls -d .gclient > /dev/null 2>&1 |
- if [ $? -eq 0 ]; then |
- echo "Root found: $ROOT_OF_REPO" |
- break; |
- fi |
- if [ "$TEST_DIR" = "/" ]; then |
- failTest 1 "Hit the root directory; no .git/ found?!" |
- fi |
- ROOT_OF_REPO=$TEST_DIR |
- cd .. |
- TEST_DIR=$(pwd) |
-done |
- |
-# Make a temporary directory in the current path and checkout the revision |
-TMP_DIR=$ROOT_OF_REPO/compiler/tmp_performance_comparisons |
-mkdir -p $TMP_DIR |
- |
-LOG_FILE=$TMP_DIR/compiler_compare.log |
-STAT1=$TMP_DIR/compiler_compare_stats_1.log |
-STAT2=$TMP_DIR/compiler_compare_stats_2.log |
-COMPARE_OPTIONS+="--output=$TMP_DIR " |
- |
-# zero out files |
-echo "" > $LOG_FILE |
-echo "" > $STAT1 |
-echo "" > $STAT2 |
- |
-# Do the first test |
-echo "Compiling dartc with your changes (mode=release)" |
-cd $ROOT_OF_REPO/compiler |
-gclient runhooks >> $LOG_FILE 2>&1 |
-../tools/build.py --mode release >> $LOG_FILE 2>&1 |
-failTest $? "Error compiling your location changes, check $LOG_FILE" |
- |
-echo "Running first test against current working copy" |
-echo $SCRIPT_PATH/compiler_metrics.sh --stats-prefix=yours --dartc=./out/Release_ia32/dartc $COMPARE_OPTIONS --app=$APP >> $LOG_FILE |
-$SCRIPT_PATH/compiler_metrics.sh --stats-prefix=yours --dartc=./out/Release_ia32/dartc $COMPARE_OPTIONS --app=$APP > $STAT1 |
-failTest $? "Error collecting statistics from working copy" |
- |
-# switch to tmp for remainder of building |
-cd $TMP_DIR |
- |
-gclient config https://dart.googlecode.com/svn/branches/bleeding_edge/deps/compiler.deps >> $LOG_FILE 2>&1 |
-failTest $? "Error calling gclient config" |
- |
-GCLIENT_SYNC="-t " |
-if [ "" != "$REV" ]; then |
- GCLIENT_SYNC+="--revision=$REV" |
-fi |
- |
-echo "Checking out clean version of $REV; will take some time. Look at $LOG_FILE for progress" |
-gclient sync $GCLIENT_SYNC >> $LOG_FILE 2>&1 |
-failTest $? "Error calling gclient sync" |
- |
-echo "Compiler clean version; may take some time" |
-cd compiler |
-gclient runhooks >> $LOG_FILE 2>&1 |
-../tools/build.py --mode release >> $LOG_FILE 2>&1 |
-failTest $? "Error compiling comparison revision" |
- |
-# Do the second test |
-echo "Running second test against clean copy" |
-echo $SCRIPT_PATH/compiler_metrics.sh --stats-prefix=clean --dartc=./out/Release_ia32/dartc $COMPARE_OPTIONS --app=$APP >> $LOG_FILE |
-$SCRIPT_PATH/compiler_metrics.sh --stats-prefix=clean --dartc=./out/Release_ia32/dartc $COMPARE_OPTIONS --app=$APP > $STAT2 |
-failTest $? "Error collecting statistics from clean copy" |
- |
-calcStats |