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 后哪些指标最可能改善、该关注哪些基准测试。

相关推荐
小新讲网安1 小时前
WiFi安全攻防实战:WPA3新协议与传统破解技术全解析
开发语言·网络·安全·php·漏洞·nmap·漏洞检测
再吃一根胡萝卜6 小时前
微服务治理的“四大护法”:从 Django 视角理解 Spring Cloud 核心组件
后端
再吃一根胡萝卜6 小时前
面试终极挑战:如何用 Django 经验,回答 Java 微服务实战问题?
后端
必须会一定会7 小时前
Agent Plugins 1.0实战:plugin.json、skills、mcp.json目录结构与迁移
开发语言·人工智能·ai编程
To_OC7 小时前
装完 ESLint 它一声不吭?我还以为代码写得多好
后端·node.js·eslint
St_rive7 小时前
Page Object设计模式
java·开发语言·设计模式
wp123_18 小时前
硬件元器件笔记|IPX8 防水 Type‑C 母座安费诺 124018802112A 与 TONEVEE TY48086‑24A 分析
c语言·开发语言·笔记
wuyk5558 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
凤山老林8 小时前
精细化流量治理:Spring Boot 动态特性开关与灰度发布体系
java·spring boot·后端
luj_17689 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法