aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/mksizeclasses.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2016-12-24 17:03:10 -0800
committerAustin Clements <austin@google.com>2017-01-08 00:01:30 +0000
commitffedff7e506cdf298f06ad36f3264ca197aa7d25 (patch)
treee451c2b68ec17ca4b470ab332825083eea749c12 /src/runtime/mksizeclasses.go
parent3156736189dbc4e4a4a955c78334590819c9a914 (diff)
downloadgo-ffedff7e506cdf298f06ad36f3264ca197aa7d25.tar.xz
runtime: add table of size classes in a comment
Change-Id: I52fae67c9aeceaa23e70f2ef0468745b354f8c75 Reviewed-on: https://go-review.googlesource.com/34932 Reviewed-by: Minux Ma <minux@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/runtime/mksizeclasses.go')
-rw-r--r--src/runtime/mksizeclasses.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/runtime/mksizeclasses.go b/src/runtime/mksizeclasses.go
index 587d3c77a1..0f897ba8e6 100644
--- a/src/runtime/mksizeclasses.go
+++ b/src/runtime/mksizeclasses.go
@@ -54,6 +54,8 @@ func main() {
fmt.Fprintln(&b, "package runtime")
classes := makeClasses()
+ printComment(&b, classes)
+
printClasses(&b, classes)
out, err := format.Source(b.Bytes())
@@ -239,6 +241,20 @@ nextk:
}
}
+func printComment(w io.Writer, classes []class) {
+ fmt.Fprintf(w, "// %-5s %-9s %-10s %-7s %-11s\n", "class", "bytes/obj", "bytes/span", "objects", "waste bytes")
+ for i, c := range classes {
+ if i == 0 {
+ continue
+ }
+ spanSize := c.npages * pageSize
+ objects := spanSize / c.size
+ waste := spanSize - c.size*(spanSize/c.size)
+ fmt.Fprintf(w, "// %5d %9d %10d %7d %11d\n", i, c.size, spanSize, objects, waste)
+ }
+ fmt.Fprintf(w, "\n")
+}
+
func printClasses(w io.Writer, classes []class) {
fmt.Fprintln(w, "const (")
fmt.Fprintf(w, "_MaxSmallSize = %d\n", maxSmallSize)