977977e6ea
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9 260f80e4-7a28-3924-810f-c04153c831b5
60 lines
1.6 KiB
Bash
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"
|
|
}
|