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:\Users\xinhua\workspace\testproj\src\main>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

golang中 return如果返回指针比大型struct性能高的更多相关文章

  1. python中return的返回和执行

    1 打印函数名和打印函数的执行过程的区别 例子1.1 def a(): print(111) print(a) # 打印a函数的内存地址,不会对a函数有影响,a函数不会执行 print(a()) # ...

  2. 【GoLang】golang中可以直接返回slice吗?YES

    结论: 可以,slice本质是结构体,返回slice时返回的是结构体的值,结构体的指针.len.cap等信息也全部返回了. 如下: type slice struct { start *uintptr ...

  3. Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题

    在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...

  4. 第十九课 golang中的下划线

    在 Golang 里, _ (下划线)是个特殊的标识符. 用在 import 在导包的时候,常见这个用法: 1 2 import _ "net/http/pprof" import ...

  5. 【golang】golang中结构体的初始化方法(new方法)

    准备工作: 定义结构体:Student import ( "fmt" "reflect") type Student struct { StudentId st ...

  6. Golang中defer、return、返回值之间执行顺序的坑

    原文链接:https://studygolang.com/articles/4809 Go语言中延迟函数defer充当着 cry...catch 的重任,使用起来也非常简便,然而在实际应用中,很多go ...

  7. golang 中的指针

    # golang 中的指针 看了一篇[文章](http://blog.51cto.com/steed/2341409),写的很好.这里略微总结下重点: 1. 地址值.unsafe.Pointer.ui ...

  8. go中defer的理解--defer、return、返回值之间执行顺序

    defer可以读取有名返回值 func c() (i int) { defer func() { i++ }() return 1 } 输出结果是2. 在开头的时候,我们知道defer是在return ...

  9. Golang 中的指针 - Pointer

    http://www.cnblogs.com/jasonxuli/p/6802289.html   Go 的原生数据类型可以分为基本类型和高级类型,基本类型主要包含 string, bool, int ...

随机推荐

  1. Flask的第一个应用

    Flask 是一个 Python 实现的 Web 开发微框架,微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展. 与Django功能上比较: Django:中间件,路由系统,视图(CBV ...

  2. IntellIJ IDEA 配置 Maven

    一.配置Maven环境 1.下载apache-maven文件,选择自己需要的版本 2.解压1所下载文件,E:\apache-maven-3.5.4 3.配置Maven环境变量 a. MAVEN_HOM ...

  3. [luogu5176] 公约数

    题目描述 求 \[ \sum_{i=1}^n\sum_{j=1}^m\sum_{k=1}^p\gcd(i\cdot j,i\cdot k,j\cdot k)\times \gcd(i,j,k)\tim ...

  4. BZOJ4653 & 洛谷1712 & UOJ222:[NOI2016]区间——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4653 https://www.luogu.org/problemnew/show/P1712 ht ...

  5. BZOJ1076:[SCOI2008]奖励关——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1076 https://www.luogu.org/problemnew/show/P2473 你正在 ...

  6. BZOJ1041 [HAOI2008]圆上的整点 【数学】

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4631  Solved: 2087 [Submit][S ...

  7. SRM12 T2夏令营(分治优化DP+主席树 (已更新NKlogN)/ 线段树优化DP)

     先写出朴素的DP方程f[i][j]=f[k][j-1]+h[k+1][i] {k<i}(h表示[k+1,j]有几个不同的数)  显然时间空间复杂度都无法承受   仔细想想可以发现对于一个点 i ...

  8. [NOI2017]蔬菜——时光倒流+贪心

    题目链接 题解: 貌似一眼看过去是一个贪心. 其他的算法要记录的东西就太多了. 部分分其实很高.但是没有什么提示. 想一些套路:二分?不行还要贪心判断. 分治?前后取法是有影响的. 时光倒流? 也许可 ...

  9. MEMCACHE用法详解

    MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度. Me ...

  10. Spring框架介绍和原理

    SpringMVC框架介绍 1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...