day03 高质量编程与性能调优实战
1 高质量编程
正确可靠、简洁清晰
边界条件、异常处理、易读易维护
1.2编码规范(defer、panic)
格式:gofmt
注释
命名规范
控制流程:(1)避免嵌套;(2)尽量保持正常代码路径为最小缩进(优先处理error)
错误和异常处理:最好用error代替panic
defer:
“
defer function_name()
这个语句会将 function_name() 函数推迟到包含它的函数返回之前执行。defer 语句的执行顺序是 “先进后出” ,也就是说,最后一个 defer 语句会最先执行,而第一个 defer 语句会最后执行。
”
“
Panic 和 Recover
Go 语言中的 panic 和 recover 机制可以用于处理程序的错误和异常情况。当程序出现错误时,我们可以使用 panic 函数来抛出一个异常,并且程序会在当前函数中断执行,转而执行当前函数的 defer 语句。在 defer 语句中,我们可以使用 recover 函数来捕获异常并进行处理。下面是一个简单的例子:
go复制代码func test() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered:", r)
}
}()
panic("test panic")
}
在这个例子中,我们在 test() 函数中使用了 panic 函数来抛出一个异常。在 defer 语句中,我们使用 recover 函数来捕获异常,并打印出异常信息。当程序执行到 test() 函数时,它会抛出一个异常并中断执行,然后转而执行 defer 语句中的代码,最后打印出异常信息。
“
作者:KK0829 链接:juejin.cn/post/721391… 来源:稀土掘金
1.3性能优化
1.3.1 benchmark
评估执行性能
1.3.2 slice
尽可能在make初始化时提供容量信息
1.3.3 map
预分配内存
1.3.4 字符串处理
使用strings.Builder拼接字符串性能更好
1.3.5 空结构体
空结构体不占空间
1.3.6 atomic包
atomic通过硬件来实现锁的功能,效率比锁高
2 性能调优实战
2.1 简介
性能调优原则:1)依靠数据而不是猜测;2)定位最大瓶颈而不是细节;3)不要过早优化;4)不要过度优化
2.2性能分析工具pprof
pprof 是 Go 语言中分析程序运行性能的工具,它能提供各种性能数据:
深度解密Go语言之pprof - 掘金 (juejin.cn)
2.3 性能调优案例
2.3.1 业务服务优化
1)建立评估手段
2)进行评估,定位瓶颈
3)优化
4)测试