type tt struct{
aa int
bb int
cc int
str string
}
func func_rstruct () tt{
t:=tt{1,2,3,"88888888888"}
return t
}
func func_rpstruct () *tt{
t:=tt{1,2,3,"88888888888"}
return &t
}
func Benchmark_rstruct(t *testing.B) {
strs:=[CNT]string{}
for i:=0;i<CNT;i++ {
dat:= func_rstruct()
strs[i]=dat.str
}
t.Log("success"+strconv.Itoa(len(strs)))
}
func Benchmark_rpstruct(t *testing.B) {
strs:=[CNT]string{}
for i:=0;i<CNT;i++ {
dat:= func_rpstruct()
strs[i]=(*dat).str
}
t.Log("success"+strconv.Itoa(len(strs)))
}
result:
C:Usersxinhuaworkspace estprojsrcmain>go test -test.bench=".*"
Benchmark_rstruct-4 1000000000 0.29 ns/op
--- BENCH: Benchmark_rstruct-4
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
tmain_test.go:37: success1000000
... [output truncated]
Benchmark_rpstruct-4 1000000000 0.26 ns/op
--- BENCH: Benchmark_rpstruct-4
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
tmain_test.go:50: success1000000
... [output truncated]
PASS
ok _/C_/Users/xinhua/workspace/testproj/src/main 7.997s