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