| // 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 ( |
| "bytes" |
| "io" |
| "testing" |
| ) |
| |
| var ( |
| I interface{} |
| J int |
| B = new(bytes.Buffer) |
| W io.Writer = B |
| I2 interface{} = B |
| R io.ReadWriter = B |
| Big [2]*int |
| ) |
| |
| func BenchmarkConvT2E(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| I = 1 |
| } |
| } |
| |
| func BenchmarkConvT2EBig(b *testing.B) { |
| v := [2]*int{} |
| for i := 0; i < b.N; i++ { |
| I = v |
| } |
| } |
| |
| func BenchmarkConvT2I(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| W = B |
| } |
| } |
| |
| func BenchmarkConvI2E(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| I = W |
| } |
| } |
| |
| func BenchmarkConvI2I(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| W = R |
| } |
| } |
| |
| func BenchmarkAssertE2T(b *testing.B) { |
| I = 1 |
| for i := 0; i < b.N; i++ { |
| J = I.(int) |
| } |
| } |
| |
| func BenchmarkAssertE2TBig(b *testing.B) { |
| var v interface{} = [2]*int{} |
| for i := 0; i < b.N; i++ { |
| Big = v.([2]*int) |
| } |
| } |
| |
| func BenchmarkAssertE2I(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| W = I2.(io.Writer) |
| } |
| } |
| |
| func BenchmarkAssertI2T(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| B = W.(*bytes.Buffer) |
| } |
| } |
| |
| func BenchmarkAssertI2I(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| W = R.(io.Writer) |
| } |
| } |
| |
| func BenchmarkAssertI2E(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| I = R.(interface{}) |
| } |
| } |
| |
| func BenchmarkAssertE2E(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| I = I2.(interface{}) |
| } |
| } |