From 04b08da9af0c450d645ab7389d1467308cfc2db8 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Mon, 4 Mar 2013 21:27:36 +0100 Subject: Imported Upstream version 1.1~hg20130304 --- misc/benchcmp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) (limited to 'misc/benchcmp') diff --git a/misc/benchcmp b/misc/benchcmp index 015e7d2b2..3180f57ea 100755 --- a/misc/benchcmp +++ b/misc/benchcmp @@ -7,8 +7,13 @@ 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 'Each input file should be from:' >&2 + echo ' go test -test.run=NONE -test.bench=. > [old,new].txt' >&2 + echo >&2 echo 'Benchcmp compares the first and last for each benchmark.' >&2 + echo >&2 + echo 'If -test.benchmem=true is added to the "go test" command' >&2 + echo 'benchcmp will also compare memory allocations.' >&2 exit 2 esac @@ -27,10 +32,31 @@ $1 ~ /Benchmark/ && $4 == "ns/op" { new[$1] = $3 if($6 == "MB/s") newmb[$1] = $5 + + # allocs/op might be at $8 or $10 depending on if + # SetBytes was used or not. + # B/op might be at $6 or $8, it should be immediately + # followed by allocs/op + if($8 == "allocs/op") { + newbytes[$1] = $5 + newalloc[$1] = $7 + } + if($10 == "allocs/op") { + newbytes[$1] = $7 + newalloc[$1] = $9 + } } else { old[$1] = $3 - if($6 = "MB/s") + if($6 == "MB/s") oldmb[$1] = $5 + if($8 == "allocs/op") { + oldbytes[$1] = $5 + oldalloc[$1] = $7 + } + if($10 == "allocs/op") { + oldbytes[$1] = $7 + oldalloc[$1] = $9 + } } } @@ -62,5 +88,37 @@ END { sprintf("%.2f", newmb[what]), sprintf("%.2f", newmb[what]/oldmb[what])) } + + # print allocs + anyalloc = 0 + for(i=0; i