Go 1.18+ slice 扩容机制详解
围绕 Go 1.18 之后的 slice 扩容策略变化,解释阈值调整、平滑增长公式、内存对齐处理,以及它对扩容次数和内存浪费的实际影响。
收录理由:这篇文章适合作为理解 slice 行为的进阶读物,因为它不只停留在“append 会触发扩容”这一层,而是把 runtime 中的扩容逻辑、版本差异和真实场景下的性能取舍都串了起来,读完之后再看内存优化和逃逸分析会更顺手。
当前标签下共收录 5 篇文章
围绕 Go 1.18 之后的 slice 扩容策略变化,解释阈值调整、平滑增长公式、内存对齐处理,以及它对扩容次数和内存浪费的实际影响。
收录理由:这篇文章适合作为理解 slice 行为的进阶读物,因为它不只停留在“append 会触发扩容”这一层,而是把 runtime 中的扩容逻辑、版本差异和真实场景下的性能取舍都串了起来,读完之后再看内存优化和逃逸分析会更顺手。
围绕 Go 1.25 引入的实验性 Green Tea GC,系统解释现有标记-清扫流程的瓶颈、按页扫描的新思路,以及它为什么能显著降低 GC CPU 开销。
收录理由:这篇文章把一个看似“运行时内部优化”的改动讲得非常透彻,不仅能帮助理解 Go GC 的真实成本来源,也能让读者看到 Go 团队如何把缓存局部性、队列设计和向量指令一起转化成生产级收益。
结合 Go 1.24、1.25 和 1.26 的演进,说明编译器如何把更多切片分配从堆挪到栈上,从而减少分配次数与 GC 压力。
收录理由:它把“栈分配更便宜”这件大家都知道的事,延展成了对现代 Go 编译器优化路径的完整解读,尤其适合放在新特性专题里,帮助读者建立对切片、逃逸分析和分配成本的更立体理解。
围绕 sync.Map 与 map+mutex 的实现原理、读写比例差异、内存开销和误用案例,解释并发安全 map 在不同场景下该如何选型。
收录理由:这篇文章很适合作为并发性能优化的入门读物,因为它没有停留在“哪个更快”的表面结论上,而是把读写模式、键空间稳定性、API 需求和维护成本一起纳入判断,能帮助开发者避免非常常见的选型误区。
围绕 Go 中 5 种常见字符串拼接方式的 benchmark,对比它们在固定参数和可变参数场景下的执行时间、内存分配与分配次数差异。
收录理由:这篇文章很适合作为性能优化专题的基础读物,因为它把字符串拼接这个高频但常被忽略的细节讲得很清楚,不仅给出 benchmark 结果,还能直接转化为缓存 key 生成、循环累积和高并发场景下的实际优化建议。