...
Run Format

Source file test/fixedbugs/issue16008.go

Documentation: test/fixedbugs

  // errorcheck -0 -race
  
  // 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
  }
  

View as plain text