| // 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 ( | |
| "testing" | |
| ) | |
| type I1 interface { | |
| Method1() | |
| } | |
| type I2 interface { | |
| Method1() | |
| Method2() | |
| } | |
| type TS uint16 | |
| type TM uintptr | |
| type TL [2]uintptr | |
| func (TS) Method1() {} | |
| func (TS) Method2() {} | |
| func (TM) Method1() {} | |
| func (TM) Method2() {} | |
| func (TL) Method1() {} | |
| func (TL) Method2() {} | |
| var ( | |
| e interface{} | |
| e_ interface{} | |
| i1 I1 | |
| i2 I2 | |
| ts TS | |
| tm TM | |
| tl TL | |
| ) | |
| func BenchmarkConvT2ESmall(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| e = ts | |
| } | |
| } | |
| func BenchmarkConvT2EUintptr(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| e = tm | |
| } | |
| } | |
| func BenchmarkConvT2ELarge(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| e = tl | |
| } | |
| } | |
| func BenchmarkConvT2ISmall(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| i1 = ts | |
| } | |
| } | |
| func BenchmarkConvT2IUintptr(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| i1 = tm | |
| } | |
| } | |
| func BenchmarkConvT2ILarge(b *testing.B) { | |
| for i := 0; i < b.N; i++ { | |
| i1 = tl | |
| } | |
| } | |
| func BenchmarkConvI2E(b *testing.B) { | |
| i2 = tm | |
| for i := 0; i < b.N; i++ { | |
| e = i2 | |
| } | |
| } | |
| func BenchmarkConvI2I(b *testing.B) { | |
| i2 = tm | |
| for i := 0; i < b.N; i++ { | |
| i1 = i2 | |
| } | |
| } | |
| func BenchmarkAssertE2T(b *testing.B) { | |
| e = tm | |
| for i := 0; i < b.N; i++ { | |
| tm = e.(TM) | |
| } | |
| } | |
| func BenchmarkAssertE2TLarge(b *testing.B) { | |
| e = tl | |
| for i := 0; i < b.N; i++ { | |
| tl = e.(TL) | |
| } | |
| } | |
| func BenchmarkAssertE2I(b *testing.B) { | |
| e = tm | |
| for i := 0; i < b.N; i++ { | |
| i1 = e.(I1) | |
| } | |
| } | |
| func BenchmarkAssertI2T(b *testing.B) { | |
| i1 = tm | |
| for i := 0; i < b.N; i++ { | |
| tm = i1.(TM) | |
| } | |
| } | |
| func BenchmarkAssertI2I(b *testing.B) { | |
| i1 = tm | |
| for i := 0; i < b.N; i++ { | |
| i2 = i1.(I2) | |
| } | |
| } | |
| func BenchmarkAssertI2E(b *testing.B) { | |
| i1 = tm | |
| for i := 0; i < b.N; i++ { | |
| e = i1.(interface{}) | |
| } | |
| } | |
| func BenchmarkAssertE2E(b *testing.B) { | |
| e = tm | |
| for i := 0; i < b.N; i++ { | |
| e_ = e | |
| } | |
| } |