这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
本堂课重点内容
高质量编程
性能优化实战
详细知识点介绍
编码规范
注释
声明的公共符号需要注释
既不明显也不简短的公共功能必须注释
库中的任何函数都必须注释
注释还应该注释代码什么情况会出错
“好的代码有很多注释,坏的代码需要很多注释”
控制流程
优先处理错误/特殊情况,防止程序冗余
避免复杂的嵌套分支
线性原理,处理逻辑尽量走直线
错误和异常处理
在程序特定位置增加错误处理能够方便我们排查程序中的错误信息,否则在大量的代码中找到相关的错误信息将是一件相当麻烦的事。
panic用于真正异常的情况,一般不建议在业务中使用,通常用error来代替
性能优化指南
benchmark
基准测试性能工具benchmark
预分配内存
在声明slice变量时,如果能指定大小预分配内存,运行性能要快两三倍
同样的,声明map时也可以减少运行时间加快程序运行性能
字符串拼接:用+号性能最差,stringBuffer和stringBuilder性能差不多,其底层都是byte[]数组
atomic包
如果仅仅是维护一个变量,可以用atomic包来处理,因为锁的实现是操作系统实现,属于系统调用,而atomic通过硬件实现,效率比锁高
性能优化案例
业务服务优化
建立服务优化评估手段->分析性能数据->重点优化改造->优化效果验证
基础库优化
分析基础库核心逻辑和性能瓶颈->内部压测验证->推广业务服务落地验证
go语言优化
主要是编译器优化和运行时优化,注意内存的分配以及编译流程
总结
本次课与平时的练习或学习相关度不高,分析其主要原因可能是平时属于个人完成项目,而且项目代码量以及所需运行空间较少,而企业级别的项目肯定比较注意性能优化,所以现在开始要养成这种如何优化性能的思维方式。还有,养成写注释的好习惯!