PGO 驱动的“动态逃逸分析”:w.Write(b) 中的切片逃逸终于有救了?

本文永久链接 – https://tonybai.com/2025/11/13/proposal-dynamic-escapes 大家好,我是Tony Bai。 io.Writer,这个在 Go 语言中无处不在的神圣接口,其背后却隐藏着一个困扰了性能敏感型开发者多年的“隐形成本”。当你将一个在函数内创建的字节切片 b 传递给 w.Write(b) 时,这个切片几乎总是会逃逸 (Escape) 到堆上,导致一次不必要的内存分配。 ...

November 13, 2025 · 5 min · Tony Bai

Go FFI 的新范式:purego 与 libffi 如何让我们无痛拥抱 C 生态

本文永久链接 – https://tonybai.com/2025/10/23/go-ffi-new-paradigm 大家好,我是Tony Bai。 import “C”,这行代码对于许多 Gopher 来说,既是通往强大 C 生态的桥梁,也是通往“地狱”的入口。CGO 作为 Go 语言内建的 FFI 机制,其为人诟病的远不止是编译期的种种不便,更包含了昂贵的运行时开销和复杂的心智负担。 ...

October 23, 2025 · 14 min · Tony Bai

系统设计的“元素周期表”:40个横跨所有领域的通用设计原则

本文永久链接 – https://tonybai.com/2025/07/31/periodic-table-of-system-design 大家好,我是Tony Bai。 近日,一篇名为《系统设计的元素》(Elements of System Design)的论文引发社区热议。它的目标宏大且吸睛:通过梳理上百篇横跨操作系统、数据库、分布式系统等领域的经典论文,提炼出一套通用的系统设计原则“元素周期表”。 ...

July 31, 2025 · 16 min · Tony Bai

通过实例理解Go静态单赋值(SSA)

本文永久链接 – https://tonybai.com/2022/10/21/understand-go-ssa-by-example 在上一篇文章《通过实例理解Go内联优化》中,我们探讨了Go编译器在编译中端进行的内联优化。内联优化基于IR中间表示进行,不过Go编译过程不止有一种IR表示,这点和龙书《编译原理(第二版)》的在第六章“中间代码生成”一开始处的讲解是一致的,即在将给定源语言的一个程序翻译成特定的目标机器代码的过程中,一个编译器可能构造出一系列中间表示(IR),如下图: 高层中间表示更接近于源语言,而低层的中间表示则更接近于目标机器。在Go编译过程中,如果说内联优化使用的IR是高层中间表示,那么低层中间表示非支持静态单赋值(SSA)的中间代码形式莫属。 ...

October 21, 2022 · 15 min · Tony Bai

通过实例理解Go内联优化

本文永久链接 – https://tonybai.com/2022/10/17/understand-go-inlining-optimisations-by-example 移动互联网时代,直面C端用户的业务系统规模一般都很庞大,系统消耗的机器资源也很可观,系统使用的CPU核数、内存都是在消耗公司的真金白银。在服务水平不下降的前提下尽量降低单服务实例的资源消耗,即我们俗称的“少吃草多产奶”,一直是各个公司经营人员的目标,有些公司每降低1%的CPU核数使用,每年都能节省几十万的开销。 ...

October 17, 2022 · 16 min · Tony Bai