GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Why Go arrow_drop_down
  • Case Studies
  • Use Cases
  • Security
  • Learn
  • Go Spec
  • Go User Manual
  • Standard library
  • Release Notes
  • Effective Go
  • Packages
  • Recorded Talks
  • Meetups open_in_new
  • Conferences open_in_new

This view

  • Original page
  • New address

GeezerVison is showing go.dev — - The Go Programming Language

Source file src/testing/example_loop_test.go

     1  // Copyright 2024 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package testing_test
     6  
     7  import (
     8  	"math/rand/v2"
     9  	"testing"
    10  )
    11  
    12  // ExBenchmark shows how to use b.Loop in a benchmark.
    13  //
    14  // (If this were a real benchmark, not an example, this would be named
    15  // BenchmarkSomething.)
    16  func ExBenchmark(b *testing.B) {
    17  	// Generate a large random slice to use as an input.
    18  	// Since this is done before the first call to b.Loop(),
    19  	// it doesn't count toward the benchmark time.
    20  	input := make([]int, 128<<10)
    21  	for i := range input {
    22  		input[i] = rand.Int()
    23  	}
    24  
    25  	// Perform the benchmark.
    26  	for b.Loop() {
    27  		// Normally, the compiler would be allowed to optimize away the call
    28  		// to sum because it has no side effects and the result isn't used.
    29  		// However, inside a b.Loop loop, the compiler ensures function calls
    30  		// aren't optimized away.
    31  		sum(input)
    32  	}
    33  
    34  	// Outside the loop, the timer is stopped, so we could perform
    35  	// cleanup if necessary without affecting the result.
    36  }
    37  
    38  func sum(data []int) int {
    39  	total := 0
    40  	for _, value := range data {
    41  		total += value
    42  	}
    43  	return total
    44  }
    45  
    46  func ExampleB_Loop() {
    47  	testing.Benchmark(ExBenchmark)
    48  }
    49  

View as plain text

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.