Go1.22 新特性:性能提高、Trace 大修、工作区支持 vendor 等

大家好,我是煎鱼。

关于 Go1.22 先前已分享过好几篇文章,今天主要是针对一些较零散的新更新进行补充说明。

主要选择的是对日常开发有一定影响的,主打一个知情了解即可。

运行环境要求

Go 1.22 是能在 macOS 10.15 Catalina 上运行的最后一个版本。Go 1.23 需要 macOS 11 Big Sur 或更高版本。

言外之意,如果期望用更新版本的 Go。要尽快安排升级 macOS 的系统版本了,不然将会被新版本所抛下。

f75952f95a6cc4600f84ce70917471f9.png

工作区支持 vendor

Go 在一开始的 workspace(工作区)的功能支持上,由于考虑到简化实现,没有去支持 vendor 模式。但从社区反馈来看确实是有真实的使用诉求的。

从 Go1.22 起,把这个缺漏填补上了。对应的命令是:go work vendor;功能方面与 go mod vendor 保持一致。

ba9f9cc30a25a30ad369f68afac2a0da.png

旧依赖管理不再支持

在传统的 GOPATH 模式下(即 GO111MODULE=off 时),不再支持在 Go Module 之外使用 go get

其他编译命令,例如:go buildgo test,将继续无限期地适用于传统的 GOPATH 程序。

初始化命令 go mod init 将不再尝试从其他依赖工具(如 Gopkg.lock)的配置文件中导入模块依赖。

正式放弃对旧版工具的支持。

Runtime 性能提高

Go1.22 起,Runtime(运行时)会将基于类型的垃圾回收元数据保持在每个堆对象附近,以此提高了综合性能:

  • CPU:Go 程序的 CPU 性能(延迟或吞吐量)提高 1-3%

  • Memory:通过重复冗余元数据,将大多数 Go 程序的内存开销降低了约 1%。

带来的副作用是这一变更调整了内存分配器的大小类边界,一些对象可能会被上移到一个合适大小的类中。

在 Go 工程上,这对我们 Go 程序影响几乎没有,四舍五入升个级就能提高程序性能了。

PGO 效果更好,性能提高

Profile-guided Optimization (PGO) 构建的虚拟化调用比例比以前更高。

在一组具有代表性的 Go 程序中,大多数程序现在都能通过启用 PGO 得到 2% 到 14% 的性能改进

Trace 更好用了

跟踪(go tool trace)工具的 Web UI 已被彻底刷新,解决了多个历史问题,并提高了各子页面的可读性。

现在支持在面向线程的视图中探索跟踪。跟踪查看器现在还能显示所有系统调用的全部持续时间。

这些改进仅适用于查看使用 Go 1.22 或更新版本构建的程序生成的跟踪。未来的版本将对旧版 Go 生成的跟踪进行部分改进。

3ddf8c131ac0f7c2a60f066c03dacaf5.png

总结

今天针对 Go1.22 的其他新功能点进行了分享和介绍,不少地方都是去旧立新。升级带来的性能推高也是每个版本都有一点。

与此同时 Trace 终于有 Google 的一群大佬大修了一把,太感动了。毕竟我们现在用的 Trace 是 2014 年的设计产物...

该工具之前使用起来,我认为确实是有一定门槛。大家可以关注下这次迭代后尝试使用一下,看看区别。

Go1.22 预计 2 月份正式发布,目前已发布 RC2。

当前总进度:

b195739abdafd517bc65aa02ea844a3c.png

我猜测中旬发布,大家可以边过节边学习新版本了!完整的发布内容可以查看 Go 1.22 Release Notes[1]

已更新的 Go1.22 特性系列

参考资料

[1]

Go 1.22 Release Notes: https://tip.golang.org/doc/go1.22

关注和加煎鱼微信,

一手消息和知识,拉你进技术交流群👇

4e23bfa08dae531558acac5bba2275c5.jpeg

9a6dc7ae6dd8942fe13b228196ae0264.png

你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路

日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!

原创不易 点赞支持

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值