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程序运行时进行性能检测