day3学习笔记 | 青训营

66 阅读2分钟

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 语言中分析程序运行性能的工具,它能提供各种性能数据:

pprof 采集的信息类型

深度解密Go语言之pprof - 掘金 (juejin.cn)

2.3 性能调优案例

2.3.1 业务服务优化

1)建立评估手段

2)进行评估,定位瓶颈

3)优化

4)测试

2.3.2 基础库优化

2.3.3 go语言优化