高质量编程和性能调优 | 青训营笔记

65 阅读2分钟

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

一、本堂课重点内容:

  • 高质量编程
  • 性能调优

二、详细知识点介绍:

  • 高质量编程

    准确可靠、简洁清晰

    • 边界条件考虑完备
    • 异常情况处理、稳定性
    • 易读易维护

    编程原则

    • 简单性
    • 可读性
    • 生产力:团队合作统一规范

    编码规范

    • 代码格式:gofmt自动格式化代码
    • 注释:解释代码作用、如何做的、实现原因、出错情况;公共符号无论长短繁简都应注释
    • 命名规范:简洁;缩略词全大写,位于开头且无需导出时全小写;距离使用的地方越远,越多上下文信息
    • 控制流程:避免嵌套;最小缩进
    • 错误和异常处理:errors提供上下文信息链方便定位问题;尽量少用panic,除不可处理的真正异常情况;recover生效范围仅在当前goroutine的被defer函数中生效
  • 性能调优

    原则

    • 基于数据
    • 定位最大瓶颈
    • 不要过早优化:如用户体量较小,需求变化较快时先不考虑优化
    • 不要过度优化:过度对特异性优化会造成代码修改的困难

    性能分析工具:pprof

    优化类型

    • 业务服务优化
    • 基础库优化
    • Go语言优化:编译器&运行时优化

三、实践练习例子:

  • pprof使用

    运行练习项目 https://github.com/wolfogre/go-pprof-practice
    image.png

    浏览器查看指标http://localhost:6060/debug/pprof/
    image.png

    采集数据 go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10" image.png

    top查看资源消耗最多 image.png

    list查看特定代码行 image.png

    web调用关系可视化 image.png

四、课后个人总结:

  • 正确性是首位
  • 应该遵循统一、可读、易维护的规范进行代码开发
  • 性能调优应以数据测试出发,但也要避免过度过早优化