mirror of
https://github.com/golang/go
synced 2024-11-17 19:54:45 -07:00
runtime: add BenchmarkStackCopyWithStkobj
For benchmarking and improving recent stkobj-related changes. Co-Authored-By: Cherry Mui <cherryyz@google.com> Change-Id: I34c8b1a09e4cf98547460882b0d3908158269f57 Reviewed-on: https://go-review.googlesource.com/c/go/+/354071 Trust: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
0b4d4998d5
commit
75773b0e7b
@ -585,6 +585,34 @@ func count21(n int) int { return 1 + count22(n-1) }
|
|||||||
func count22(n int) int { return 1 + count23(n-1) }
|
func count22(n int) int { return 1 + count23(n-1) }
|
||||||
func count23(n int) int { return 1 + count1(n-1) }
|
func count23(n int) int { return 1 + count1(n-1) }
|
||||||
|
|
||||||
|
type stkobjT struct {
|
||||||
|
p *stkobjT
|
||||||
|
x int64
|
||||||
|
y [20]int // consume some stack
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sum creates a linked list of stkobjTs.
|
||||||
|
func Sum(n int64, p *stkobjT) {
|
||||||
|
if n == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s := stkobjT{p: p, x: n}
|
||||||
|
Sum(n-1, &s)
|
||||||
|
p.x += s.x
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkStackCopyWithStkobj(b *testing.B) {
|
||||||
|
c := make(chan bool)
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
go func() {
|
||||||
|
var s stkobjT
|
||||||
|
Sum(100000, &s)
|
||||||
|
c <- true
|
||||||
|
}()
|
||||||
|
<-c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type structWithMethod struct{}
|
type structWithMethod struct{}
|
||||||
|
|
||||||
func (s structWithMethod) caller() string {
|
func (s structWithMethod) caller() string {
|
||||||
|
Loading…
Reference in New Issue
Block a user