go sync.pool优化测试-程序员宅基地

技术标签: go  

最近在工作中,频繁用到一些结构体的申请,内存会频繁的进行释放和申请,于是想尝试一下sync.pool的优化效果。

sync.pool,需要初始化 Pool,唯一需要的就是设置好 New 函数。当调用 Get 方法时,如果池子里缓存了对象,就直接返回缓存的对象。如果没有存货,则调用 New 函数创建一个新的对象。

另外,我们发现 Get 方法取出来的对象和上次 Put 进去的对象实际上是同一个,Pool 没有做任何“清空”的处理。但我们不应当对此有任何假设,因为在实际的并发使用场景中,无法保证这种顺序,最好的做法是在 Put 前,将对象清空。

对不同的数据类型,以及go官方推荐的场景尝试了pool

测试代码运行结果

===map===
no pool: 669.209138ms
pool: 150.040187ms
===string===
no pool: 755.579983ms
pool: 766.081325ms
===slince===
no pool: 7.260073ms
pool: 12.101939ms
===符合官方pool条件的结构体===
no pool: 44.480533049s
pool: 37.973930565s

结论

对于map或者自定义类型的结构体,使用pool会有较好的提升

测试代码如下:

package ma
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35423190/article/details/119572015

智能推荐

交叉编译openssh出现错误Makefile:548: recipe for target 'install_sw' failed_makefile:546: recipe for target 'install_sw' faile-程序员宅基地

文章浏览阅读6.9k次,点赞3次,收藏4次。交叉编译openssh出现错误将OpenSSH移植到ARM Linux,交叉编译openssh时,在第二步编译openssl时,make install出现如下错误:cp: 'e_os2.h' and '/home/word/iTOP-4412-Linux-ssh/openssl-1.0.2l/include/openssl/e_os2.h' are the same fileMakefile:5_makefile:546: recipe for target 'install_sw' failed

求大佬解答此错:See the end of this message for details on invoking  just-in-time (JIT) debugging instead of...-程序员宅基地

文章浏览阅读8.2k次。以上为图片:以下为报错的详细内容: 注:这是一个办公软件 只有个别的电脑安装oa系统后,点击邮箱的功能才报此错。 请有解决过类似或者此问题的大佬请帮忙看看,谢谢。**************ExceptionText**************System.NullReferenceException:Objectreferencenot..._see the end of this message for details on invoking just-in-time (jit) debug

Docker时区timezone问题_docker image timezone-程序员宅基地

文章浏览阅读10w+次。文章目录Linux时间类型docker时间、时区问题docker-compose启动时的设置:dockerfile进行镜像设置生成容器启动时直接设置Linux时间类型在Unix类的机器下的/usr/share/zoneinfo/文件内为所有代码调用的ZONEINFO的数据位置,想查看设置哪个时区时,直接去里边看名字即可。docker时间、时区问题docker容器内默认为utc时间..._docker image timezone

Linux 命令【4】:sar_linux sadf-程序员宅基地

文章浏览阅读596次。Linux 命令【3】:sar文章目录_linux sadf

Python魔法方法、魔法属性_magicattribute-程序员宅基地

文章浏览阅读243次。magic method魔法方法Magic attribute魔法属性_magicattribute

Hive自定义GenericUDF函数_使用genericudf自定义函数-程序员宅基地

文章浏览阅读1.1k次,点赞9次,收藏5次。*** 自定义函数:将字符串转换为大写*//*** 初始化函数* @param arguments 函数参数的ObjectInspector数组* @return 函数返回值的ObjectInspector* @throws UDFArgumentException 如果参数数量不正确*/@Override// 检查参数数量是否为1= 1) {// 获取参数的ObjectInspector并创建Converter。_使用genericudf自定义函数

随便推点

“有嗅觉”的机器人,闻出8种气味_“有嗅觉”的机器人能闻出8种气味,灵敏度比普通设备高10000倍-程序员宅基地

文章浏览阅读163次。当机器人接触不同气味时,这个传感器向与之连接的一个电子系统传递不同的电信号,随后,该团队使用机器学习方法创建了一个“气味系统库”,包括柠檬、杏仁糖、天竺葵、和混合气味等,并使用了一个随机森林分类器进行气味分类。研究显示,这台机器人能够嗅出天竺葵、柠檬、杏仁蛋白糖等8种气味,就算混合在一起也能分辨出来,而且灵敏度比气相色谱-质谱法(GC-MS)高10000倍!甚至能检测出0.001微克的挥发性发挥物。以色列特拉维夫大学研究人员把蝗虫触须安装到机器人上,利用蝗虫的灵敏嗅觉将机器人辨别气味的灵敏度提高约1万倍。_“有嗅觉”的机器人能闻出8种气味,灵敏度比普通设备高10000倍

阿里CTO程立:阿里巴巴的开源历程、理念和实践-程序员宅基地

文章浏览阅读3.7k次。云和开源,已然共同成为数字世界的根,需要政府和企业、需要我们大家一起来共建和共享。

Vue结合3D技术实现VR看房效果_vue 3d前进看房-程序员宅基地

文章浏览阅读2.6k次。vue 项目中实现vr360度全景看房图片预览_vue 3d前进看房

强烈推荐 10 本我私藏的数据库书单,附读书方法_数据库书籍-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏130次。二哥有推荐的数据库书单吗?关于 MySQL 和 Oracle 的,谢谢了。读者小猫私信问了我上面这个问题,我觉得问题挺典型的,值得写篇文章分享一下。因为对于 Java 程序员来说,几乎不可避免地要和数据库打交道,MySQL 和 Oracle 恰好又是两个使用最广泛的数据库。MySQL 和 Oracle 都属于关系型数据库,现在都隶属于甲骨文公司,这家公司的产品很牛逼,CEO 拉里埃尔森也很牛逼,和史蒂夫乔布斯是铁哥们。Oracle 相对 MySQL 更沉重一些,属于企业级应用。而 MySQL 是开源._数据库书籍

[mysql]约束_不能对自增列使用check约束-程序员宅基地

文章浏览阅读380次。sre_不能对自增列使用check约束

NodeJS之Koa框架_nodejskoa框架-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏28次。文章目录1 koa简介1.1 Koa应用1.2 中间件1.3 多个中间件的合并1.4 路由1.5 context对象1.6 错误处理机制1.7 cookie1.8 session1.9 Request对象1.9.1 this.request.header1.9.2 this.request.method1.9.3 this.request.length1.9.4 this.request.path..._nodejskoa框架