<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>优化 on Tony Bai</title><link>https://tonybai.com/tags/%E4%BC%98%E5%8C%96/</link><description>Recent content in 优化 on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Tue, 27 Jan 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/%E4%BC%98%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>TypeScript 编译器 Go 重写版提速 10 倍：微软团队深度揭秘幕后工程细节</title><link>https://tonybai.com/2026/01/27/typescript-compiler-go-rewrite-10x-speed-microsoft-details/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0800</pubDate><guid>https://tonybai.com/2026/01/27/typescript-compiler-go-rewrite-10x-speed-microsoft-details/</guid><description>本文永久链接 – https://tonybai.com/2026/01/27/typescript-compiler-go-rewrite-10x-speed-microsoft-details 大家好，我是Tony Bai。 “JavaScript 是一门很棒的语言，但它并不是为了编写编译器而设计的。” 备受瞩目的 TypeScript 编译器 Go 重写版（代号 TypeScript 7.0...</description></item><item><title>PGO 驱动的“动态逃逸分析”：w.Write(b) 中的切片逃逸终于有救了？</title><link>https://tonybai.com/2025/11/13/proposal-dynamic-escapes/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/13/proposal-dynamic-escapes/</guid><description>本文永久链接 – https://tonybai.com/2025/11/13/proposal-dynamic-escapes 大家好，我是Tony Bai。 io.Writer，这个在 Go 语言中无处不在的神圣接口，其背后却隐藏着一个困扰了性能敏感型开发者多年的“隐形成本”。当你将一个在函数内创建的字节切片 b 传递给 w.Write(b) 时，这个切片几乎总是会**逃逸 (Escape)*...</description></item><item><title>来自 Go 创始人的忠告：这五条关于“复杂性”的法则，比算法更重要</title><link>https://tonybai.com/2025/11/10/rob-pike-on-complexity/</link><pubDate>Mon, 10 Nov 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/11/10/rob-pike-on-complexity/</guid><description>本文永久链接 – https://tonybai.com/2025/11/10/rob-pike-on-complexity 大家好，我是Tony Bai。 在软件工程的殿堂里，我们常常将算法和数据结构奉为圭臬。我们痴迷于时间复杂度的优化，热衷于讨论各种精巧的数据结构。然而，Go 语言的联合创始人 Rob Pike 早在其1989年的一篇C 语言编程笔记中，就为我们留下了一份更根本的“忠告”。这份...</description></item><item><title>系统设计的“元素周期表”：40个横跨所有领域的通用设计原则</title><link>https://tonybai.com/2025/07/31/periodic-table-of-system-design/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/07/31/periodic-table-of-system-design/</guid><description>本文永久链接 – https://tonybai.com/2025/07/31/periodic-table-of-system-design 大家好，我是Tony Bai。 近日，一篇名为《系统设计的元素》（Elements of System Design）的论文引发社区热议。它的目标宏大且吸睛：通过梳理上百篇横跨操作系统、数据库、分布式系统等领域的经典论文，提炼出一套通用的**系统设计原则“...</description></item><item><title>告别手写汇编：Go官方提出原生SIMD支持，高性能计算将迎来巨变</title><link>https://tonybai.com/2025/06/09/go-simd-intrinsics/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/06/09/go-simd-intrinsics/</guid><description>告别手写汇编：Go官方提出原生SIMD支持，高性能计算将迎来巨变 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ ...</description></item><item><title>自定义Hash终迎标准化？Go提案maphash.Hasher接口设计解读</title><link>https://tonybai.com/2025/04/17/standardize-the-hash-function/</link><pubDate>Thu, 17 Apr 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/04/17/standardize-the-hash-function/</guid><description>自定义Hash终迎标准化？Go提案maphash.Hasher接口设计解读 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶...</description></item><item><title>探索Go gcflags的使用模式与完整参数选项列表</title><link>https://tonybai.com/2025/01/22/gcflags-options-list-and-usage/</link><pubDate>Wed, 22 Jan 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/01/22/gcflags-options-list-and-usage/</guid><description>探索Go gcflags的使用模式与完整参数选项列表 - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 ...</description></item><item><title>惊！Go在十亿次循环和百万任务中表现不如Java，究竟为何？</title><link>https://tonybai.com/2024/12/02/why-go-sucks/</link><pubDate>Mon, 02 Dec 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/12/02/why-go-sucks/</guid><description>本文永久链接 – https://tonybai.com/2024/12/02/why-go-sucks 编程语言比较的话题总是能吸引程序员的眼球！ 近期外网的两篇编程语言对比的文章在国内程序员圈里引起热议。一篇是由Ben Dicken (@BenjDicken) 做的语言性能测试，对比了十多种主流语言在执行10亿次循环(一个双层循环：1万 \* 10 万)的速度；另一篇则是一个名为hez2010...</description></item><item><title>Go，15岁了[译]</title><link>https://tonybai.com/2024/11/12/go-turns-15/</link><pubDate>Tue, 12 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/12/go-turns-15/</guid><description>Go，15岁了\[译\] | Tony Bai =============== Tony Bai一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * 关于我 * 文章列表 Go，15岁了\[译\] ========...</description></item><item><title>Go编译的几个细节，连专家也要停下来想想</title><link>https://tonybai.com/2024/11/11/some-details-about-go-compilation/</link><pubDate>Mon, 11 Nov 2024 00:00:00 +0800</pubDate><guid>https://tonybai.com/2024/11/11/some-details-about-go-compilation/</guid><description>本文永久链接 – https://tonybai.com/2024/11/11/some-details-about-go-compilation 在Go开发中，编译相关的问题看似简单，但实则蕴含许多细节。有时，即使是Go专家也需要停下来，花时间思考答案或亲自验证。本文将通过几个具体问题，和大家一起探讨Go编译过程中的一些你可能之前未曾关注的细节。 &amp;gt; 注：本文示例使用的环境为Go 1.23.0、...</description></item><item><title>Go 1.22新特性前瞻</title><link>https://tonybai.com/2023/12/25/go-1-22-foresight/</link><pubDate>Mon, 25 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/25/go-1-22-foresight/</guid><description>本文永久链接 – https://tonybai.com/2023/12/25/go-1-22-foresight 美国时间2023年12月20日，Go官方宣布Go 1.22rc1发布，开启了为期2个多月的、常规的公测之旅，Go 1.22预计将于2024.2月份正式发布！ 除了在官网下载Go 1.22rc1版本进行新特性体验之外，我们还可以通过在线的Go Playground选择“Go dev b...</description></item><item><title>Go，14周年[译]</title><link>https://tonybai.com/2023/11/11/go-opensource-14-years/</link><pubDate>Sat, 11 Nov 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/11/11/go-opensource-14-years/</guid><description>本文永久链接 – https://tonybai.com/2023/11/11/go-opensource-14-years 国内的双十一购物狂欢已没有了当年的那种热闹与喧嚣，但大洋彼岸的Go团队却始终保持稳中有增的开发和语言演进节奏。今晨Go核心团队的Russ Cox代表Go语言项目团队在Go官博上发表了《Fourteen Years of Go》的博文，纪念Go语言开源14周年，并对2023年...</description></item><item><title>Go 1.20新特性前瞻</title><link>https://tonybai.com/2022/11/17/go-1-20-foresight/</link><pubDate>Thu, 17 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/17/go-1-20-foresight/</guid><description>本文永久链接 – https://tonybai.com/2022/11/17/go-1-20-foresight * * * 在近期Russ Cox代表Go核心团队发表的“Go, 13周年”一文中，他提到了“在Go的第14个年头，Go团队将继续努力使Go成为用于大规模软件工程的最好的环境，将特别关注供应链安全，提高兼容性和结构化日志记录，当然还会有很多其他改进，包括profile-guided ...</description></item><item><title>通过实例理解Go静态单赋值（SSA）</title><link>https://tonybai.com/2022/10/21/understand-go-ssa-by-example/</link><pubDate>Fri, 21 Oct 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/10/21/understand-go-ssa-by-example/</guid><description>本文永久链接 – https://tonybai.com/2022/10/21/understand-go-ssa-by-example 在上一篇文章《通过实例理解Go内联优化》中，我们探讨了Go编译器在编译中端进行的内联优化。内联优化基于IR中间表示进行，不过Go编译过程不止有一种IR表示，这点和龙书《编译原理(第二版)》的在第六章“中间代码生成”一开始处的讲解是一致的，即在将给定源语言的一个程...</description></item><item><title>针对大型数组的迭代，for range真的比经典for loop慢吗？</title><link>https://tonybai.com/2022/03/19/for-range-vs-classic-for-loop-when-iterating-large-array/</link><pubDate>Sat, 19 Mar 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/03/19/for-range-vs-classic-for-loop-when-iterating-large-array/</guid><description>本文永久链接 – https://tonybai.com/2022/03/19/for-range-vs-classic-for-loop-when-iterating-large-array Go语言推崇“**一件事情仅有一个作法**”！比如：Go仅保留一类循环控制语句，那就是**经典版的for loop**： ``` for i := 0; i &amp;lt; 100; i++ { ... ... } `...</description></item><item><title>Go究竟是否为空切片分配了底层数组</title><link>https://tonybai.com/2022/02/15/whether-go-allocate-underlying-array-for-empty-slice/</link><pubDate>Tue, 15 Feb 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/02/15/whether-go-allocate-underlying-array-for-empty-slice/</guid><description>本文永久链接 – https://tonybai.com/2022/02/15/whether-go-allocate-underlying-array-for-empty-slice 这周在“Go语言第一课”的留言区看到一位同学的这样一个问题： 切片是Go语言中的一个重要的语法元素，也是日常Go开发中使用最为频繁的语法元素。有过Go语言开发经验的童鞋估计大多都知道空切片(empty slice)...</description></item><item><title>Go 1.15中值得关注的几个变化</title><link>https://tonybai.com/2020/10/11/some-changes-in-go-1-15/</link><pubDate>Sun, 11 Oct 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/10/11/some-changes-in-go-1-15/</guid><description>Go 1.15版本在8月12日就正式发布了，给我的感觉就是发布的挺痛快^\_^。这种感觉来自与之前版本发布时间的对比：Go 1.13版本发布于当年的9月4日，更早的Go 1.11版本发布于当年的8月25日。 不过这个时间恰与我家二宝出生和老婆月子时期有重叠，每天照顾孩子团团转的我实在抽不出时间研究Go 1.15的变化:(。如今，我逐渐从照顾二宝的工作中脱离出来^\_^，于是“Go x.xx版本值得...</description></item><item><title>记一次go panic问题的解决过程</title><link>https://tonybai.com/2019/04/04/notes-about-fixing-a-go-panic-problem/</link><pubDate>Thu, 04 Apr 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/04/04/notes-about-fixing-a-go-panic-problem/</guid><description>一. Panic问题概述 ------------ 本周收到客户在bugclose上填写的一个issue：添加一个下发通道后，pushd程序panic并退出了！程序panic时输出的stacktrace信息摘录如下： panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: se...</description></item><item><title>Goroutine调度实例简要分析</title><link>https://tonybai.com/2017/11/23/the-simple-analysis-of-goroutine-schedule-examples/</link><pubDate>Thu, 23 Nov 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/11/23/the-simple-analysis-of-goroutine-schedule-examples/</guid><description>前两天一位网友在微博私信我这样一个问题： &amp;gt; 抱歉打扰您咨询您一个关于Go的问题：对于goroutine的概念我是明了的，但很疑惑goroutine的调度问题, 根据《Go语言编程》一书：“当一个任务正在执行时，外部没有办法终止它。要进行任务切换，只能通过由该任务自身调用yield()来主动出让CPU使用权。” 那么，假设我的goroutine是一个死循环的话，是否其它goroutine就没有执行...</description></item><item><title>Go程序调试、分析与优化</title><link>https://tonybai.com/2015/08/25/go-debugging-profiling-optimization/</link><pubDate>Tue, 25 Aug 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/08/25/go-debugging-profiling-optimization/</guid><description>Brad Fitzpatrick在YAPC Asia 2015（Yet Another Perl Conference）上做了一次技术分享，题为：&amp;#34;Go Debugging, Profiling, and Optimization&amp;#34;。个人感觉这篇分享中价值最大的是BradFitz现场演示的一个有关如何对Go程序进行调试、分析和优化的 Demo，Brad将demo上传到了他个人在github.com...</description></item></channel></rss>