高质量编程与性能调优实战预习 | 青训营笔记

60 阅读2分钟

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

一、重点内容:

  • 本次主要对高质量编程与性能调优的内容进行了预习。
    • 高质量编程主要针对的是编码规范和性能优化
    • 性能调优主要是通过性能分析工具进行业务和语言优化。

二、详细知识点介绍:

  1. 代码注释建议
  • 不要创建自定义上下文类型或使用上下文以外的接口函数签名。如果有要传递的应用程序数据,请将其放在参数中,在接收器中,在全局变量中,或者,如果它确实属于那里,则在上下文值中。
  • 声明空切片。设计接口时,避免区分nil片和非nil的零长度片。
  • 文档注释方面
  • 其余内容可以参考:代码审查评论 ·golang/go Wiki (github.com)
  1. test命令
  1. -bench参数进行性能测试
  • func BenchmarkXxx(*testing.B)被视为基准测试,通过go test -bench执行。
  • go test还支持模糊测试,它是使用随机生成的输入调用函数以查找错误,定义为func FuzzXxx(*testing.F)。

三、实践练习例子:

package main

import (
	"log"
	"net/http"
	_ "net/http/pprof"
	"os"
	"runtime"
	"time"

	"github.com/wolfogre/go-pprof-practice/animal"
)

func main() {
	log.SetFlags(log.Lshortfile | log.LstdFlags)
	log.SetOutput(os.Stdout)

	runtime.GOMAXPROCS(1)
	runtime.SetMutexProfileFraction(1)
	runtime.SetBlockProfileRate(1)

	go func() {
		if err := http.ListenAndServe(":6060", nil); err != nil {
			log.Fatal(err)
		}
		os.Exit(0)
	}()

	for {
		for _, v := range animal.AllAnimals {
			v.Live()
		}
		time.Sleep(time.Second)
	}
}
  • 运行结果如图所示:

结果.png

  • 加入了一个dog类的测试结果

test.png

四、课后个人总结:

  • 该课程不仅仅适用于Go语言,而是适用于整个职业。要写好代码,这部分知识是不可或缺的。学习这部分内容扩展了我的知识面,以前对如何写好代码没有什么头绪,只能模仿他人的风格,经过稍微系统的学习后确实受益匪浅。

  • Talk is cheap,write your code. 这句话确实是真理,光看是不够的,只有足够的训练才能真正掌握一个技术。