Go高质量编程与性能优化 | 青训营笔记

51 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

本堂课重点内容

高质量编程

性能优化实战

详细知识点介绍

编码规范

注释

声明的公共符号需要注释

既不明显也不简短的公共功能必须注释

库中的任何函数都必须注释

注释还应该注释代码什么情况会出错

“好的代码有很多注释,坏的代码需要很多注释”

控制流程

优先处理错误/特殊情况,防止程序冗余

避免复杂的嵌套分支

线性原理,处理逻辑尽量走直线

错误和异常处理

在程序特定位置增加错误处理能够方便我们排查程序中的错误信息,否则在大量的代码中找到相关的错误信息将是一件相当麻烦的事。

panic用于真正异常的情况,一般不建议在业务中使用,通常用error来代替

性能优化指南

benchmark

基准测试性能工具benchmark

image.png

预分配内存

在声明slice变量时,如果能指定大小预分配内存,运行性能要快两三倍

同样的,声明map时也可以减少运行时间加快程序运行性能

字符串拼接:用+号性能最差,stringBuffer和stringBuilder性能差不多,其底层都是byte[]数组

atomic包

如果仅仅是维护一个变量,可以用atomic包来处理,因为锁的实现是操作系统实现,属于系统调用,而atomic通过硬件实现,效率比锁高

性能优化案例

业务服务优化

建立服务优化评估手段->分析性能数据->重点优化改造->优化效果验证

基础库优化

分析基础库核心逻辑和性能瓶颈->内部压测验证->推广业务服务落地验证

go语言优化

主要是编译器优化和运行时优化,注意内存的分配以及编译流程

总结

本次课与平时的练习或学习相关度不高,分析其主要原因可能是平时属于个人完成项目,而且项目代码量以及所需运行空间较少,而企业级别的项目肯定比较注意性能优化,所以现在开始要养成这种如何优化性能的思维方式。还有,养成写注释的好习惯!