github.com/wangyougui/gf/v2@v2.6.5/util/gconv/gconv_z_bench_reflect_test.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/wangyougui/gf.
     6  
     7  // go test *.go -bench=".*" -benchmem
     8  
     9  package gconv_test
    10  
    11  import (
    12  	"reflect"
    13  	"testing"
    14  )
    15  
    16  type testStruct struct {
    17  	Id   int
    18  	Name string
    19  }
    20  
    21  var ptr = []*testStruct{
    22  	{
    23  		Id:   1,
    24  		Name: "test1",
    25  	},
    26  	{
    27  		Id:   2,
    28  		Name: "test2",
    29  	},
    30  }
    31  
    32  func init() {
    33  	for i := 1; i <= 1000; i++ {
    34  		ptr = append(ptr, &testStruct{
    35  			Id:   1,
    36  			Name: "test1",
    37  		})
    38  	}
    39  }
    40  
    41  func Benchmark_Reflect_ValueOf(b *testing.B) {
    42  	for i := 0; i < b.N; i++ {
    43  		reflect.ValueOf(ptr)
    44  	}
    45  }
    46  
    47  func Benchmark_Reflect_ValueOf_Kind(b *testing.B) {
    48  	for i := 0; i < b.N; i++ {
    49  		reflect.ValueOf(ptr).Kind()
    50  	}
    51  }
    52  
    53  func Benchmark_Reflect_ValueOf_Interface(b *testing.B) {
    54  	for i := 0; i < b.N; i++ {
    55  		reflect.ValueOf(ptr).Interface()
    56  	}
    57  }
    58  
    59  func Benchmark_Reflect_ValueOf_Len(b *testing.B) {
    60  	for i := 0; i < b.N; i++ {
    61  		reflect.ValueOf(ptr).Len()
    62  	}
    63  }