c2047754c3
Compiler changes: * Change map assignment to use mapassign and assign value directly. * Change string iteration to use decoderune, faster for ASCII strings. * Change makeslice to take int, and use makeslice64 for larger values. * Add new noverflow field to hmap struct used for maps. Unresolved problems, to be fixed later: * Commented out test in go/types/sizes_test.go that doesn't compile. * Commented out reflect.TestStructOf test for padding after zero-sized field. Reviewed-on: https://go-review.googlesource.com/35231 gotools/: Updates for Go 1.8rc1. * Makefile.am (go_cmd_go_files): Add bug.go. (s-zdefaultcc): Write defaultPkgConfig. * Makefile.in: Rebuild. From-SVN: r244456
45 lines
1016 B
Go
45 lines
1016 B
Go
// Copyright 2014 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.
|
|
|
|
package context_test
|
|
|
|
import (
|
|
. "context"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkContextCancelTree(b *testing.B) {
|
|
depths := []int{1, 10, 100, 1000}
|
|
for _, d := range depths {
|
|
b.Run(fmt.Sprintf("depth=%d", d), func(b *testing.B) {
|
|
b.Run("Root=Background", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
buildContextTree(Background(), d)
|
|
}
|
|
})
|
|
b.Run("Root=OpenCanceler", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
ctx, cancel := WithCancel(Background())
|
|
buildContextTree(ctx, d)
|
|
cancel()
|
|
}
|
|
})
|
|
b.Run("Root=ClosedCanceler", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
ctx, cancel := WithCancel(Background())
|
|
cancel()
|
|
buildContextTree(ctx, d)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
func buildContextTree(root Context, depth int) {
|
|
for d := 0; d < depth; d++ {
|
|
root, _ = WithCancel(root)
|
|
}
|
|
}
|