Go 语言程序性能优化理论 | 青训营

95 阅读2分钟

Hi!本篇笔记我们将探索 Go 语言程序如何优化性能。我们将介绍一些基础的性能优化理论,并介绍几个性能优化工具。

premature optimization is the root of all evil(过早优化是所有邪恶的根源).

—— Donald E.Knuth

前提:写正确的代码。先写正确的代码,再去考虑如何让代码更快更好地运行;先完成基本功能,再去想如何优化。没有这个基础,一切优化都是毫无意义的。

限制:底层硬件配置。软件依靠硬件运行,一个性能低下的硬件,即使软件优化地再好也没办法发挥软件的全部性能。

什么时候做优化:不要在早期刻意地花大量时间做优化,应当专注于程序的实现,慢慢地,由于业务的发展,就会有驱动力去驱动我们进行优化。

花多长时间做优化:优化耗费的时间将远远超过开发的时间,并要花费更多的精力,在改进代码的同时,也要同步改进架构和组件的问题。

Go 代码静态评估工具

  • goreporter – 生成Go代码质量评估报告
  • dingo-hunter – 用于在Go程序中找出deadlocks的静态分析器
  • flen – 在Go程序包中获取函数长度信息
  • go/ast – Package ast声明了关于Go程序包用于表示语法树的类型
  • gocyclo – 在Go源代码中测算cyclomatic函数复杂性
  • Go Meta Linter – 同时Go lint工具且工具的输出标准化
  • go vet – 检测Go源代码并报告可疑的构造
  • ineffassign – 在Go代码中检测无效赋值
  • safesql – Golang静态分析工具,防止SQL注入

动态评估工具:pprof工具,用于在Go程序运行时进行性能检测