#!/bin/sh
# Copyright 2011 The Go Authors.  All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

case "$1" in
-*)	
	echo 'usage: benchcmp old.txt new.txt' >&2
	echo >&2
	echo 'Each input file should be go test -test.run=NONE -test.bench=. > [old,new].txt' >&2
	echo 'Benchcmp compares the first and last for each benchmark.' >&2
	exit 2
esac

awk '
BEGIN {
	n = 0
}

$1 ~ /Benchmark/ && $4 == "ns/op" {
	if(old[$1]) {
		if(!saw[$1]++) {
			name[n++] = $1
			if(length($1) > len)
				len = length($1)
		}
		new[$1] = $3
		if($6 == "MB/s")
			newmb[$1] = $5
	} else {
		old[$1] = $3
		if($6 = "MB/s")
			oldmb[$1] = $5
	}
}

END {
	if(n == 0) {
		print "benchcmp: no repeated benchmarks" >"/dev/stderr"
		exit 1
	}

	printf("%-*s %12s %12s  %7s\n", len, "benchmark", "old ns/op", "new ns/op", "delta")

	# print ns/op
	for(i=0; i<n; i++) {
		what = name[i]
		printf("%-*s %12d %12d  %6s%%\n", len, what, old[what], new[what],
			sprintf("%+.2f", 100*new[what]/old[what]-100))
	}

	# print mb/s
	anymb = 0
	for(i=0; i<n; i++) {
		what = name[i]
		if(!(what in newmb))
			continue
		if(anymb++ == 0)
			printf("\n%-*s %12s %12s  %7s\n", len, "benchmark", "old MB/s", "new MB/s", "speedup")
		printf("%-*s %12s %12s  %6sx\n", len, what,
			sprintf("%.2f", oldmb[what]),
			sprintf("%.2f", newmb[what]),
			sprintf("%.2f", newmb[what]/oldmb[what]))
	}
}
' "$@"
