mirror of https://github.com/golang/go.git
misc/benchcmp: show memory statistics, when available
R=minux.ma, dave, extraterrestrial.neighbour, rsc CC=golang-dev https://golang.org/cl/6587069
This commit is contained in:
parent
90d959be78
commit
d5449eafb9
|
|
@ -7,8 +7,13 @@ case "$1" in
|
||||||
-*)
|
-*)
|
||||||
echo 'usage: benchcmp old.txt new.txt' >&2
|
echo 'usage: benchcmp old.txt new.txt' >&2
|
||||||
echo >&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 '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
|
exit 2
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
@ -27,10 +32,21 @@ $1 ~ /Benchmark/ && $4 == "ns/op" {
|
||||||
new[$1] = $3
|
new[$1] = $3
|
||||||
if($6 == "MB/s")
|
if($6 == "MB/s")
|
||||||
newmb[$1] = $5
|
newmb[$1] = $5
|
||||||
|
|
||||||
|
# allocs/op might be at $8 or $10 depending on if
|
||||||
|
# SetBytes was used or not.
|
||||||
|
if($8 == "allocs/op")
|
||||||
|
newalloc[$1] = $7
|
||||||
|
if($10 == "allocs/op")
|
||||||
|
newalloc[$1] = $9
|
||||||
} else {
|
} else {
|
||||||
old[$1] = $3
|
old[$1] = $3
|
||||||
if($6 = "MB/s")
|
if($6 == "MB/s")
|
||||||
oldmb[$1] = $5
|
oldmb[$1] = $5
|
||||||
|
if($8 == "allocs/op")
|
||||||
|
oldalloc[$1] = $7
|
||||||
|
if($10 == "allocs/op")
|
||||||
|
oldalloc[$1] = $9
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,5 +78,21 @@ END {
|
||||||
sprintf("%.2f", newmb[what]),
|
sprintf("%.2f", newmb[what]),
|
||||||
sprintf("%.2f", newmb[what]/oldmb[what]))
|
sprintf("%.2f", newmb[what]/oldmb[what]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# print allocs
|
||||||
|
anyalloc = 0
|
||||||
|
for(i=0; i<n; i++) {
|
||||||
|
what = name[i]
|
||||||
|
if(!(what in newalloc))
|
||||||
|
continue
|
||||||
|
if(anyalloc++ == 0)
|
||||||
|
printf("\n%-*s %12s %12s %7s\n", len, "benchmark", "old allocs", "new allocs", "delta")
|
||||||
|
if(oldalloc[what] == 0)
|
||||||
|
delta="n/a"
|
||||||
|
else
|
||||||
|
delta=sprintf("%.2f", 100*newalloc[what]/oldalloc[what]-100)
|
||||||
|
printf("%-*s %12d %12d %6s%%\n", len, what,
|
||||||
|
oldalloc[what], newalloc[what], delta)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
' "$@"
|
' "$@"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue