Initial commit: Go 1.23 release state
This commit is contained in:
58
test/fixedbugs/issue16008.go
Normal file
58
test/fixedbugs/issue16008.go
Normal file
@@ -0,0 +1,58 @@
|
||||
// errorcheck -0 -race
|
||||
|
||||
//go:build (linux && amd64) || (linux && ppc64le) || (darwin && amd64) || (freebsd && amd64) || (netbsd && amd64) || (windows && amd64)
|
||||
|
||||
// Copyright 2016 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 foo
|
||||
|
||||
const benchmarkNumNodes = 10000
|
||||
|
||||
func BenchmarkUpdateNodeTransaction(b B) {
|
||||
s, nodeIDs := setupNodes(benchmarkNumNodes)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N(); i++ {
|
||||
_ = s.Update(func(tx1 Tx) error {
|
||||
_ = UpdateNode(tx1, &Node{
|
||||
ID: nodeIDs[i%benchmarkNumNodes],
|
||||
})
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
type B interface {
|
||||
ResetTimer()
|
||||
N() int
|
||||
}
|
||||
|
||||
type Tx interface {
|
||||
}
|
||||
|
||||
type Node struct {
|
||||
ID string
|
||||
}
|
||||
|
||||
type MemoryStore struct {
|
||||
}
|
||||
|
||||
//go:noinline
|
||||
func setupNodes(n int) (s *MemoryStore, nodeIDs []string) {
|
||||
return
|
||||
}
|
||||
|
||||
//go:noinline
|
||||
func (s *MemoryStore) Update(cb func(Tx) error) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var sink interface{}
|
||||
|
||||
//go:noinline
|
||||
func UpdateNode(tx Tx, n *Node) error {
|
||||
sink = tx
|
||||
sink = n
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user