| // 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) |
| } |
| } |