blob: 8b28d7bc644f8f9c498b0c3b3107d71d072ac27e [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2011 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -o nounset
set -o errexit
#@ LogRealTime <time_file> <graph_label> <bench> <compiler_setup>
#@ Take wall time data from <time_file>, and log it for the Chrome perf bots.
#@ <time_file> should be a single line where column 1 and 2 are user/sys.
LogRealTime() {
local time_file=$1
local graph_label=$2
local bench=$3
local setup=$4
# Generate a list of times "[x,y,z]". The chromium perf log parser
# will know to average this list of times.
local times="[$(awk '{print $3}' ${time_file} | \
tr '\n' ',' | sed 's/,$//')]"
LogPerf ${graph_label} ${bench} ${setup} "${times}" "seconds"
}
#@ LogGzippedSize <file_to_zip> <graph_label> <bench> <compiler_setup>
#@ Measure and log size of gzipped executable/bc files/etc.
LogGzippedSize() {
local file_to_zip=$1
local graph_label=$2
local bench=$3
local setup=$4
local tempsize=`gzip ${file_to_zip} -c | wc -c`
LogPerf ${graph_label} ${bench} ${setup} ${tempsize} "bytes"
}
#@ Emit a chrome perf log datapoint
#@ $1 :: graph_type
#@ $2 :: bench_name
#@ $3 :: compiler setup
#@ $4 :: measurement value
#@ $5 :: unit
LogPerf() {
echo "RESULT $1_$2: $3= $4 $5"
}
######################################################################
# Main
######################################################################
# Print the usage message to stdout.
Usage() {
egrep "^#@" $0 | cut --bytes=3-
}
[ $# = 0 ] && set -- help # Avoid reference to undefined $1.
if [ "$(type -t $1)" != "function" ]; then
Usage
echo "ERROR: unknown mode '$1'." >&2
exit 1
fi
eval "$@"