Go 1.26在性能方面做了哪些提升?

Go 1.26 的性能提升主要集中在新的 Green Tea GC、cgo 调用开销、小对象分配、切片栈分配以及标准库热点函数几个方面。 对大多数后端 / 服务型程序来说,这是一次"白送"的吞吐量和延迟优化升级,无需改代码即可受益。 go

垃圾回收:Green Tea GC 成为默认

  • 之前处于实验阶段的 Green Tea GC 在 1.26 中正式成为默认 GC,实现方式改为按连续内存块(span)批量扫描,从"按对象随机访问"变为"按页顺序扫描",显著改善 CPU cache 命中率。 zenn
  • 官方基准测试显示,在大量依赖 GC 的真实程序中,GC 开销通常可下降约 10--40%,在请求 99 分位延迟、整体 CPU 占用上都有明显改善。 portallinuxferramentas.blogspot
  • 在 Intel Ice Lake、AMD Zen 4 及更新的 amd64 平台上,GC 还能利用向量指令扫描小对象,额外再降低约 10% 左右的 GC 开销。 tonybai

cgo 调用开销下降

  • Go 1.26 将 cgo 调用的基线运行时开销降低了大约 30%,这来自于运行时内部对 cgo 边界切换和线程复用逻辑的优化。 go
  • 对于频繁调用 C 库(如加解密、图像/视频处理、数据库驱动)的服务来说,这些跨边界调用在同样负载下会明显更快,部分场景的延迟提升甚至可达到约 30--40%。 uradical

小对象分配与切片栈分配

  • 运行时为 1--512 字节的小对象新增了按大小"专门化"的分配路径,通过跳转表快速选择对应的 allocator,相比统一通用实现,小对象分配成本在这些场景下可降低最多约 30%。 antonz
  • 编译器现在可以在更多场景下把切片的底层数组放在栈上,而不是堆上,从而减少 GC 需要管理的堆对象数量,间接提升运行时性能和降低 GC 压力。 infoworld

标准库热点路径优化

  • io.ReadAll 经过重写,现在在多数输入规模下大约快一倍,同时总内存分配量通常减少约一半,返回的最终切片也会更接近真实大小,减少浪费。 webdelo
  • 这些优化叠加 GC 与分配器的改进,使得典型的 I/O 密集型 HTTP 服务、日志聚合、文件处理工具在不改代码的前提下就能获得更好的吞吐量和更低的内存占用。 go

对你意味着什么?

  • 如果你的服务是典型的微服务 / Web API,存在大量小对象分配、JSON 编解码、I/O 操作,升级到 1.26 一般会看到 GC CPU 时间、整体 CPU 利用率和尾延迟都有可观下降。 zenn
  • 如果有大量 cgo 或 syscall 热点(调用 C 库、数据库驱动、系统 API),1.26 的跨边界优化会直接降低这些热点的开销,有利于在相同硬件上跑更多 QPS 或降低云资源成本。 go

如果你愿意贴出当前线上某个服务的 pprof(特别是 gc, allocs, cgo 相关),可以一起具体分析升级到 1.26 后哪些指标最可能改善、该关注哪些基准测试。

相关推荐
阳光是sunny7 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦7 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny7 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
-银雾鸢尾-7 小时前
C#中的StringBuilder相关方法
开发语言·c#
皮皮林5517 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
-银雾鸢尾-8 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
努力的小雨8 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康9 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白9 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司9 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求