Go语言高质量编程及性能调优 | 青训营笔记

75 阅读2分钟

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

一. 重点内容

概况.jpg

  • Go语言编码规范

  • Go语言性能优化建议

  • Go性能分析

二. 知识点介绍

1. Go语言编码规范

  • 保持高质量编程的三要素:简单性、可读性、生产力
  • 简单性:代码逻辑简单清晰,不存在无法理解的代码
  • 可读性:代码良好的可读性才能保证代码易于维护
  • 生产力:提高团队整体生产效率
  • 注释:公共符号、变量、功能模块以及函数都需要添加注释
  • 代码格式:推荐使用gofmt自动格式化代码
  • 命名规范:简洁易懂,注意区分大写和小写
  • 控制流程:避免嵌套,去除冗余的代码,保持代码为最小缩进;优先处理错误/特殊情况,尽早return或者继续循环减少嵌套
  • 错误和异常处理:优先使用errors.New()创建匿名变量表示简单错误;若有格式化输出错误的需求,使用fmt.Errorf()来处理;在业务代码中,不推荐使用panic(),尽量使用error代替panic;注意recover()的生效范围,只在当前goroutine的被defer的函数中生效;有多个defer的函数,注意执行顺序,后进先出

2. Go语言性能优化建议

  • 性能表现:需要数据衡量,Go语言提供了支持性能基准测试的benchmark工具
  • Slice预分配内存:尽量在make()初始化切片时提供容量信息
  • 字符串处理:如使用strings.Builder()处理字符串拼接[内存扩容策略],strings.Builder()和bytes.Builder()底层都是[]bytes数组,不需要重新分配内存,而使用"+"每次都会重新分配内存
  • 空结构体:节省内存,可作为占位符使用
  • atomic包:安全的增加多线程任务中的计数器,通过硬件实现,效率比锁要高

3. Go语言性能分析[ppof]

ppof.png

四. 个人课后总结

我们在写Go语言代码时遵守代码规范,保证代码质量,在满足代码正确可靠、逻辑简洁清晰的前提下提高程序性能,不要一味的追求程序性能,反而会因小失大。