Source file
src/runtime/norace_test.go
1
2
3
4
5
6
7
8
9 package runtime_test
10
11 import (
12 "runtime"
13 "testing"
14 )
15
16
17 func BenchmarkSyscall(b *testing.B) {
18 benchmarkSyscall(b, 0, 1)
19 }
20
21 func BenchmarkSyscallWork(b *testing.B) {
22 benchmarkSyscall(b, 100, 1)
23 }
24
25 func BenchmarkSyscallExcess(b *testing.B) {
26 benchmarkSyscall(b, 0, 4)
27 }
28
29 func BenchmarkSyscallExcessWork(b *testing.B) {
30 benchmarkSyscall(b, 100, 4)
31 }
32
33 func benchmarkSyscall(b *testing.B, work, excess int) {
34 b.SetParallelism(excess)
35 b.RunParallel(func(pb *testing.PB) {
36 foo := 42
37 for pb.Next() {
38 runtime.Entersyscall()
39 for i := 0; i < work; i++ {
40 foo *= 2
41 foo /= 2
42 }
43 runtime.Exitsyscall()
44 }
45 _ = foo
46 })
47 }
48
View as plain text