Index: compiler/scripts/dartc_metrics.sh |
diff --git a/compiler/scripts/dartc_metrics.sh b/compiler/scripts/dartc_metrics.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..b324223f03153f8552eb8cba05ba482d791e211a |
--- /dev/null |
+++ b/compiler/scripts/dartc_metrics.sh |
@@ -0,0 +1,71 @@ |
+#!/bin/bash --posix |
+# |
+# 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. |
+ |
+# Compiles either TotalDart or Thump based on benchmark and reports |
+# the metrics back to the collector. |
+# Removes 'out' directory if one exists. |
+ |
+# Determine where the libs are |
+DARTC_HOME=`readlink -f .` |
+DIST_DIR=$DARTC_HOME/compiler |
+DARTC_BIN=$DIST_DIR/bin/dartc |
+ |
+# A word about directories |
+# The project directories are now copied before this script runs and we just have to change |
+# in to the correct sub-directory to compile. We'll send the output of compiles and metrics |
+# to the script directory instead of poluting the cache. |
+LAST_ARG=`readlink -f ${!#}` |
+BENCH_DIR=`dirname $LAST_ARG` |
+ |
+# Big hack. We assume that the benchmark argument in the list: |
+# x/y/dart/BenchmarkName.dart |
+BENCH_NAME=`basename $LAST_ARG .dart` |
+ |
+# Currently we only benchmark the compilation of two applications; |
+# Redpill's Thump and Dart's Total. |
+if [ $BENCH_NAME == "Total" ]; then |
+ cd $BENCH_DIR/samples/total/src/ |
+ APP_FILE=Total.dart |
+ DART_MAIN_FILE=Total.dart |
+else |
+ if [ $BENCH_NAME == "Thump" ]; then |
+ cd $BENCH_DIR/samples/swarm |
+ APP_FILE=swarm.dart |
+ DART_MAIN_FILE=SwarmApp.dart |
+ else |
+ echo "ERROR: Compilation failed - benchmark ${BENCH_NAME} != Total | Thump" 1>&2 |
+ exit 1 |
+ fi |
+fi |
+ |
+DARTC_FLAGS="--metrics --out $DARTC_HOME/out " |
+ |
+# Warmup period, run the compiler a few times to warm up the os/filesystem/etc |
+# before collecting metrics |
+$DARTC_BIN $DARTC_FLAGS -noincremental $APP_FILE > /dev/null 2>&1 |
+rm -Rf $DARTC_HOME/out |
+ |
+# Full compile metrics |
+$DARTC_BIN $DARTC_FLAGS -noincremental $APP_FILE > $DARTC_HOME/build.full.txt |
+ |
+# Single file delta incremental metrics |
+touch $DART_MAIN_FILE |
+$DARTC_BIN $DARTC_FLAGS $APP_FILE > $DARTC_HOME/build.incr.txt |
+ |
+# Generate output for the metrics collection |
+SED_FULL_CMD="s/^[^#].*/${BENCH_NAME}-full-&/p" |
+SED_INCR_CMD="s/^[^#].*/${BENCH_NAME}-incr-&/p" |
+sed -ne $SED_FULL_CMD $DARTC_HOME/build.full.txt |
+sed -ne $SED_INCR_CMD $DARTC_HOME/build.incr.txt |
+ |
+# Cleanup compiled output and metrics captures |
+rm -rf $DARTC_HOME/out $DARTC_HOME/build.full.txt $DARTC_HOME/build.incr.txt |
+ |
+if [ ! "$? " = "0 " ]; then |
+ echo "ERROR: Compilation failed." 1>&2 |
+ exit 1 |
+fi |
+ |