Web Analytics

连 Rob Pike 都感到“担忧”:Go 1.26 SIMD 引入的新复杂性与应对之道

本文永久链接 – https://tonybai.com/2025/11/06/proposal-simd-cpu-feature-vet-check 大家好,我是Tony Bai。 Go 1.26 将于11月份功能特性冻结,其最令人期待的实验特性之一,无疑是simd 包的引入。它承诺为 Go 开发者解锁 SIMD (Single Instruction, Multiple Data) 的强大能力,让我们能编写出榨干现代 CPU 向量化计算潜能的高性能代码。然而,在这片兴奋的浪潮之下,一个不和谐的声音却悄然响起,而这个声音,来自 Go 语言的联合创始人之一——Rob Pike。 ...

November 6, 2025 · 8 min · Tony Bai

Go 官方详解“Green Tea”垃圾回收器:从对象到页,一场应对现代硬件挑战的架构演进

本文永久链接 – https://tonybai.com/2025/10/31/deep-into-go-green-tea-gc 大家好,我是Tony Bai。 关注 Go 语言演进的 Gopher 们可能已经注意到,Go 团队更换技术负责人以来,对运行时 (runtime) 和编译器 (compiler) 核心组件的打磨正日益成为团队的工作重心。从备受期待的“绿茶”GC (Green Tea GC),到 标准库simd 加速包的探索,再到 基于swisstable的 map 的实现,以及 json/v2 的设计实现,一系列动作都预示着 Go 正在其性能核心地带进行着深刻的自我革新。 ...

October 31, 2025 · 21 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

解锁 CPU 终极性能:Go 原生 SIMD 包预览版初探

本文永久链接 – https://tonybai.com/2025/08/22/go-simd-package-preview 大家好,我是Tony Bai。 多年以来,对于追求极致性能的 Go 开发者而言,心中始终有一个“痛点”:当算法需要压榨 CPU 的最后一点性能时,唯一的选择便是“下降”到手写汇编,这让利用 SIMD (Single Instruction, Multiple Data) 指令集提升程序性能这条路显得尤为陡峭难行。 ...

August 22, 2025 · 10 min · Tony Bai

哲学家与工程师:为何 Rust 和 Go 的“官方之声”如此不同?

本文永久链接 – https://tonybai.com/2025/08/21/go-rust-official-voices 大家好,我是Tony Bai。 最近,在阅读 Rust 核心团队负责人 Niko Matsakis 庆祝十周年的系列博文时,我注意到了一个有趣的现象。我下意识地将他的文字,与我长期关注的 Go语言之父Rob Pike以及Go 团队前技术负责人 Russ Cox 的文章放在一起对比。 ...

August 21, 2025 · 7 min · Tony Bai

Go vs. Rust再掀波澜:Grab真实案例复盘,Gopher如何看待这场“效率与代价”之争?

Go vs. Rust再掀波澜:Grab真实案例复盘,Gopher如何看待这场“效率与代价”之争? - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

June 24, 2025 · 7 min · Tony Bai

告别手写汇编:Go官方提出原生SIMD支持,高性能计算将迎来巨变

告别手写汇编:Go官方提出原生SIMD支持,高性能计算将迎来巨变 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

June 9, 2025 · 8 min · Tony Bai

Google I/O 2025 Go 语言进展:生产力、生产就绪与 AI 赋能

Google I/O 2025 Go 语言进展:生产力、生产就绪与 AI 赋能 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

May 25, 2025 · 15 min · Tony Bai

Go新垃圾回收器登场:Green Tea GC如何通过内存感知显著降低CPU开销?

Go新垃圾回收器登场:Green Tea GC如何通过内存感知显著降低CPU开销? - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

May 3, 2025 · 7 min · Tony Bai