后端与 高质量编程和性能调优实战 | 青训营笔记

104 阅读2分钟

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

一、第三节课重点内容:

  • 高质量编程
  • 调优实战

虽然总结来说只有两个part,但是课时挺长,以下大概记录个人觉得比较感兴趣的部分

二、详细内容:

  • 高质量编程 编写的代码正确可靠、简洁清晰可以称之为高质量代码。需要注意以下几点:
  1. 代码格式,推荐使用gofmt自动格式化代码

  2. 代码注释

  3. 命名规范

  4. 控制流程

  5. 错误和异常处理

    只有高质量代码才是生产力,不喜勿喷。

  • 调优实战
  1. 针对go语言提供了支持基准性能测试的benchmark工具go test -bench=. -benchmem

  2. 主要还是使用性能分析工具pprof, 可以分析得到代码什么地方耗费了多少CPU\Memory,并且进行可视化分析数据。使用topN指令可以查看CPU占用资源最多的函数。使用list可以使用正则表达查找代码行。web指令查看调用关系可视化。同时还可以查看堆内存,🐂🍺plus。还可以排查goroutine。

  3. pprof采用过程和原理初识。 对于CPU 排查,采样对象为函数调用和占用时间。OS每10ms向进程发送一次SIGPROF信号,然后记录调用堆栈,并写入输出流(感觉和log类似咧)。对于堆内存 排查,采样对象为函数调用和占用时间。OS每10ms向进程发送一次SIGPROF信号,然后记录调用堆栈,并写入输出流(感觉和log类似咧)。采样程序通过内存分配器记录分配/释放的大小和数量。对于goroutine 排查,记录所有用户发起并且运行的goroutine runtime.main的调用栈信息。

  4. 实际中,一般优化分为业务服务优化,基础库优化,语言层次优化。个人感觉还是业务服务优化居多,基础库的话要么可能是直接第三方更新了版本或者换一个更优秀的第三方库?!!!(如果不对,请指正)。