Files
sdk/compiler/scripts/metrics_math.sh
T
dgrove@google.com 977977e6ea Initial checkin.
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9 260f80e4-7a28-3924-810f-c04153c831b5
2011-10-05 05:00:35 +00:00

60 lines
1.6 KiB
Bash

#!/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.
# This file is repsonsible for performing the averag and standard deviation
# for a specific metrics over a given set of metrics in a file.
# This should be included in other compiler scripts, or used through
# sample_metrics.sh
AVERAGE=0
STDEV=0
COUNT=0
function do_math_return() {
local sum=0
local count=0
local time
for time in $2
do
sum=$(echo "$sum + $time" | bc -l)
(( count++ ))
done
average=$(echo "$sum / $count" | bc -l)
#echo "count=$count, sum=$sum, average=$average"
#go over the numbers, take the difference from the average and squart, then square root / count.
sum_dev=0
for time in $2
do
step=$(echo "$time - $average" | bc -l)
sum_dev=$(echo "$sum_dev + $step^2" | bc -l)
done
step=$(echo "$sum_dev / $count" | bc -l)
OUT="sqrt(${step})"
standard_dev=$(echo $OUT | bc -l | sed 's/\([0-9]*\.[0-9][0-9]\)[0-9]*/\1/')
average=$(echo $average | sed 's/\([0-9]*\.[0-9][0-9]\)[0-9]*/\1/')
AVERAGE=$average
STDEV=$standard_dev
COUNT=$count
}
function do_math() {
do_math_return "$1" "$2"
echo "$1: average: $AVERAGE stdev: $STDEV count: $COUNT"
}
function sample_file_return() {
TIMES=$(sed -n "s/$2\S*\s*:\s*\(\([0-9]*\)\(\.[0-9]*\)\?\)/\1/p" $3)
do_math_return "$1" "$TIMES"
SAMPLE_LINE="$1: average: $AVERAGE stdev: $STDEV count: $COUNT"
}
function sample_file() {
TIMES=$(sed -n "s/$2\S*\s*:\s*\(\([0-9]*\)\(\.[0-9]*\)\?\)/\1/p" $3)
do_math "$1" "$TIMES"
}