]> Cypherpunks.ru repositories - gostls13.git/blob - src/runtime/rand_test.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / src / runtime / rand_test.go
1 // Copyright 2017 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 runtime_test
6
7 import (
8         . "runtime"
9         "strconv"
10         "testing"
11 )
12
13 func BenchmarkFastrand(b *testing.B) {
14         b.RunParallel(func(pb *testing.PB) {
15                 for pb.Next() {
16                         Fastrand()
17                 }
18         })
19 }
20
21 func BenchmarkFastrand64(b *testing.B) {
22         b.RunParallel(func(pb *testing.PB) {
23                 for pb.Next() {
24                         Fastrand64()
25                 }
26         })
27 }
28
29 func BenchmarkFastrandHashiter(b *testing.B) {
30         var m = make(map[int]int, 10)
31         for i := 0; i < 10; i++ {
32                 m[i] = i
33         }
34         b.RunParallel(func(pb *testing.PB) {
35                 for pb.Next() {
36                         for range m {
37                                 break
38                         }
39                 }
40         })
41 }
42
43 var sink32 uint32
44
45 func BenchmarkFastrandn(b *testing.B) {
46         for n := uint32(2); n <= 5; n++ {
47                 b.Run(strconv.Itoa(int(n)), func(b *testing.B) {
48                         for i := 0; i < b.N; i++ {
49                                 sink32 = Fastrandn(n)
50                         }
51                 })
52         }
53 }