mirror of
https://github.com/golang/go
synced 2024-09-29 21:34:28 -06: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 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{}
|
||||
|
||||
func (s structWithMethod) caller() string {
|
||||
|
Loading…
Reference in New Issue
Block a user