| // Copyright 2012 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 runtime_test | |
| import ( | |
| "io" | |
| "testing" | |
| ) | |
| var errf error | |
| func errfn() error { | |
| return errf | |
| } | |
| func errfn1() error { | |
| return io.EOF | |
| } | |
| func BenchmarkIfaceCmp100(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| for j := 0; j < 100; j++ { | |
| if errfn() == io.EOF { | |
| b.Fatal("bad comparison") | |
| } | |
| } | |
| } | |
| } | |
| func BenchmarkIfaceCmpNil100(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| for j := 0; j < 100; j++ { | |
| if errfn1() == nil { | |
| b.Fatal("bad comparison") | |
| } | |
| } | |
| } | |
| } | |
| func BenchmarkDefer(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| defer1() | |
| } | |
| } | |
| func defer1() { | |
| defer func(x, y, z int) { | |
| if recover() != nil || x != 1 || y != 2 || z != 3 { | |
| panic("bad recover") | |
| } | |
| }(1, 2, 3) | |
| return | |
| } | |
| func BenchmarkDefer10(b *testing.B) { | |
| for i := 0; i < b.N/10; i++ { | |
| defer2() | |
| } | |
| } | |
| func defer2() { | |
| for i := 0; i < 10; i++ { | |
| defer func(x, y, z int) { | |
| if recover() != nil || x != 1 || y != 2 || z != 3 { | |
| panic("bad recover") | |
| } | |
| }(1, 2, 3) | |
| } | |
| } | |
| func BenchmarkDeferMany(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| defer func(x, y, z int) { | |
| if recover() != nil || x != 1 || y != 2 || z != 3 { | |
| panic("bad recover") | |
| } | |
| }(1, 2, 3) | |
| } | |
| } |