别神话 Rust 重写了:搞定1%热路径,Go 性能照样起飞

本文永久链接 – https://tonybai.com/2026/05/18/go-performance-optimization-over-rust-rewrites 大家好,我是Tony Bai。 近年来,如果你常年混迹于国内外各大技术社区,你一定会感受到一种近乎狂热的“政治正确”:带垃圾回收(GC)的语言都有原罪,万物皆可(且应该)用 Rust 重写。 ...

May 18, 2026 · 9 min · Tony Bai

内存去哪儿了?一个让大多数 Gopher 都无法清晰回答的问题

本文永久链接 – https://tonybai.com/2026/01/15/where-did-the-memory-go-gopher-unanswered-question 大家好,我是Tony Bai。 “我的服务内存又在缓慢增长了,pprof 显示不出明显的泄漏点……内存到底去哪儿了?” 这句午夜梦回的拷问,或许是许多 Go 开发者心中最深的恐惧。 ...

January 15, 2026 · 6 min · Tony Bai

Go 性能分析的“新范式”:用关键路径分析破解高并发延迟谜题

本文永久链接 – https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis 大家好,我是Tony Bai。 “如果你喜欢快速的软件,那么你来对地方了。” 在 GopherCon 2025 上,来自 Datadog 的工程师、Go Performance and diagnostics小组成员 Felix Geisendörfer 以这样一句开场白,将我们带入了一个 Go 性能分析的全新领域。 ...

December 24, 2025 · 6 min · Tony Bai

Goroutine “气泡”宇宙——Go 并发模型的新维度

本文永久链接 – https://tonybai.com/2025/12/20/goroutine-bubble-universe-go-concurrency-new-dimension 大家好,我是Tony Bai。 goroutine 是 Go 并发模型的基石,我们习惯于将其视为一个个轻量、独立的执行单元。然而,近年来,Go 语言中出现了一种新的、微妙的并发概念,Go 核心团队的成员们亲切地称之为 “Goroutine 气泡” (Goroutine Bubbles)。 ...

December 20, 2025 · 7 min · Tony Bai

Go 1.26 新特性前瞻:从 Green Tea GC 到语法糖 new(expr),性能与体验的双重进化

本文永久链接 – https://tonybai.com/2025/12/16/go-1-26-foresight 大家好,我是Tony Bai。 随着2025年11月末 Go 1.26 开发分支的功能冻结(Feature Freeze),这份预计于 2026 年初发布的版本终于揭开了神秘面纱。 ...

December 16, 2025 · 12 min · Tony Bai

来自 Go 创始人的忠告:这五条关于“复杂性”的法则,比算法更重要

本文永久链接 – https://tonybai.com/2025/11/10/rob-pike-on-complexity 大家好,我是Tony Bai。 在软件工程的殿堂里,我们常常将算法和数据结构奉为圭臬。我们痴迷于时间复杂度的优化,热衷于讨论各种精巧的数据结构。然而,Go 语言的联合创始人 Rob Pike 早在其1989年的一篇C 语言编程笔记中,就为我们留下了一份更根本的“忠告”。这份忠告,凝练为五条(或者说六条?)关于如何对抗软件“复杂性”的黄金法则。 ...

November 10, 2025 · 6 min · Tony Bai

释放 Go 的极限潜能:CPU 缓存友好的数据结构设计指南

本文永久链接 – https://tonybai.com/2025/10/16/cpu-cache-friendly-in-go 大家好,我是Tony Bai。 “现代 CPU 很快,而内存很慢。” 这句看似简单的陈词滥调,是理解现代高性能编程的唯一“真理”。我们常常致力于优化算法的时间复杂度,却忽略了一个更为根本的性能瓶颈:数据在内存和 CPU 缓存之间的移动。一次 L1 缓存的命中可能仅需数个时钟周期(~1ns),而一次主内存的访问则需要超过上百个周期(~100ns),这之间存在着超过 100 倍的惊人差距(2020年数据,如下图,近些年内存速度提升,但与L1缓存相比依旧有几十倍的差距)。 ...

October 16, 2025 · 23 min · Tony Bai

为什么说“接口”,而非代码或硬件堆砌,决定了系统的性能上限?

本文永久链接 – https://tonybai.com/2025/09/07/the-power-of-an-interface-for-performance 我的《Go语言第一课》已上市,赠书活动正在进行中,欢迎点击此链接参与。 大家好,我是Tony Bai。 我们通常如何看待性能优化?答案往往是:更快的算法、更少的内存分配、更底层的并发原语、甚至用SIMD指令压榨CPU的每一个周期。我们痴迷于“引擎盖之下”的实现细节,坚信更好的代码和更强的硬件能带来更高的性能。 然而,TigerBeetle数据库创始人Joran Dirk Greef在Strange Loop上的一场精彩的演讲(https://www.youtube.com/watch?v=yKgfk8lTQuE),用一场耗资百万美元的数据库比赛,颠覆了这一传统认知。他通过无可辩驳的基准测试数据证明:在分布式系统中,接口(Interface)的设计,而非代码实现或硬件堆砌,才是决定性能上限的真正瓶颈。 在深入探讨之前,我们必须对本文的“接口”一词进行关键澄清。对于Go开发者而言,“接口”通常指代语言层面的interface类型,一种实现行为契约以及多态的工具。但本文中所说的“接口”,则是一个更宏观、更广义的概念,它指的是系统与系统之间、或用户与系统之间进行通信的交互模式、契约与协议。你的REST API设计、gRPC的.proto文件、微服务间的调用时序,都属于这个“广义接口”的范畴。 ...

September 7, 2025 · 7 min · Tony Bai

Go 1.25中值得关注的几个变化

本文永久链接 – https://tonybai.com/2025/08/15/some-changes-in-go-1-25 大家好,我是Tony Bai。 北京时间2025年8月13日,Go 团队如期发布了 Go 语言的最新大版本——Go 1.25。按照惯例,每次 Go 大版本发布时,我都会撰写一篇“Go 1.x 中值得关注的几个变化”的文章。自 2014 年的 Go 1.4 版本起,这一系列文章已经伴随大家走过了十一个年头。 ...

August 15, 2025 · 8 min · Tony Bai

美国运通复盘 Go 语言实践:从依赖管理到并发模型,七大经验教训全解析

美国运通复盘 Go 语言实践:从依赖管理到并发模型,七大经验教训全解析 - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

July 24, 2025 · 5 min · Tony Bai