report.awk   [plain text]


# $Id: report.awk,v 1.3 2008/01/02 15:54:03 bostic Exp $

/^[^#]/ {
	total[$1] += $2
	sum[$1] += $2 * $2
	++count[$1];
}
END {
	# Compute the average, find the maximum.
	for (i in total) {
		avg[i] = total[i] / count[i];
		if (max < avg[i])
			max = avg[i]
	}

	for (i in total) {
		# Calculate variance by raw score method.
		var = (sum[i] - ((total[i] * total[i]) / count[i])) / count[i];

		# The standard deviation is the square root of the variance.
		stdv = sqrt(var);

		# Display the release value, the average score, and run count.
		printf("%s:%.2f:%d:", i, avg[i],  count[i]);

		# If this run wasn't the fastest, display the percent by which
		# this run was slower.
		if (max != avg[i])
			printf("%.0f%%", ((max - avg[i]) / max) * 100);

		printf(":");

		# If there was more than a single run, display the relative
		# standard deviation.
		if (count[i] >  1)
			printf("%.0f%%", stdv * 100 / avg[i]);

		printf("\n");
	}
}