]> Cypherpunks repositories - gostls13.git/commitdiff
misc/benchcmp: show byte allocation statistics
authorShenghou Ma <minux.ma@gmail.com>
Sat, 22 Dec 2012 19:51:16 +0000 (14:51 -0500)
committerRuss Cox <rsc@golang.org>
Sat, 22 Dec 2012 19:51:16 +0000 (14:51 -0500)
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6971048

misc/benchcmp

index b98ee2b2ff6d80105e516a98fbccfd9e5cf9db0d..3180f57eae7a01ca2a3bc98c603f7ae6e5a39e54 100755 (executable)
@@ -35,18 +35,28 @@ $1 ~ /Benchmark/ && $4 == "ns/op" {
 
                # allocs/op might be at $8 or $10 depending on if
                # SetBytes was used or not.
-               if($8 == "allocs/op")
+               # 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")
+               }
+               if($10 == "allocs/op") {
+                       newbytes[$1] = $7
                        newalloc[$1] = $9
+               }
        } else {
                old[$1] = $3
                if($6 == "MB/s")
                        oldmb[$1] = $5
-               if($8 == "allocs/op")
+               if($8 == "allocs/op") {
+                       oldbytes[$1] = $5
                        oldalloc[$1] = $7
-               if($10 == "allocs/op")
+               }
+               if($10 == "allocs/op") {
+                       oldbytes[$1] = $7
                        oldalloc[$1] = $9
+               }
        }
 }
 
@@ -94,5 +104,21 @@ END {
                printf("%-*s %12d %12d  %6s%%\n", len, what,
                        oldalloc[what], newalloc[what], delta)
        }
+
+       # print alloc bytes
+       anybytes = 0
+       for(i=0; i<n; i++) {
+               what = name[i]
+               if(!(what in newbytes))
+                       continue
+               if(anybytes++ == 0)
+                       printf("\n%-*s %12s %12s  %7s\n", len, "benchmark", "old bytes", "new bytes", "delta")
+               if(oldbytes[what] == 0)
+                       delta="n/a"
+               else
+                       delta=sprintf("%.2f", 100*newbytes[what]/oldbytes[what]-100)
+               printf("%-*s %12d %12d  %6s%%\n", len, what,
+                       oldbytes[what], newbytes[what], delta)
+       }
 }
 ' "$@"