这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
高性能Go语言发行版优化与落地实践
优化 内存管理优化 编译器优化 背景 ・自动内存管理和Go内存管理机制 ・编译器优化的基本问题和思路 实践:字节跳动遇到的性能问题以及优化方案
性能优化是什么? ・提升软件系统处理能力,减少不必要的消耗,充分发掘计算机算力 为什么要做性能优化? 用户体验:带来用户体验的提升一让刷抖音更丝滑,让双十一购物不再卡顿 ・资源高效利用:降低成本,提高效率一很小的优化乘以海量机器会是显著的性能提升和成本节约
业务层优化 计对特定场景,具体问题,具体分析 容易获得较大性能收益 语言运行时优化 解决更通用的性能问题 考虑更多场景 Tradeoffs 数据驱动 自动化性能分析工具ー-pprof 依靠数据而非猜测 首先优化最大瓶颈
性能优化与软件质量
软件质量至关重要 在保证接口稳定的前提下改进具体实现 测试用例:覆盖尽可能多的场景,方便回归 文档:做了什么,没做什么,能达到怎样的效果 隔离:通过选项控制是否开启优化 可观测:必要的日志输出
自动内存管理
动态内存 程序在运行时根据需求动态分配的内存: malloc() 自动内存管理(垃圾回收):由程序语言的运行时系统管理动态内存 ・避免手动内存管理,专注于实现业务逻辑 保证内存使用的正确性和安全性: double- free problen,use- after- free problem