• Go语言进阶篇,单元测试、基准测试的性能测试、内存占用测试


    在go语言中的单元测试比较有意思,比如测试一个函数是很方便的,只需要将文件名修改为_test.go这样的后缀即可,我们新建一个目录xxx,然后新建xxx_test.go文件,当然这个xxx的名字你可以按照功能来命名,如下:

    单元测试

    xxx_test.go

    1. package xxx
    2. import (
    3. "fmt"
    4. "testing"
    5. )
    6. func Hello(s string) string {
    7. return "Hello " + s
    8. }
    9. func TestHello(t *testing.T) {
    10. fmt.Println(Hello("寅恪光潜"))
    11. }

    其中package在前面的文章,我一般建议大家使用的是目录名,同一目录下面的go文件的包名就统一定义。

    这个TestHello就是测试Hello函数的意思,命令行进入这个xxx目录,然后输入:

    C:\Users\Tony\xxx>go test
    Hello 寅恪光潜
    PASS
    ok      _/C_/Users/Tony/xxx     0.228s

    通过测试,用时0.228s,如果是用vscode,将自动在TestHello上面出现 run test | debug test,然后我们可以直接点击它们进行测试即可,如下图:

    基准测试

    会了前面的单元测试,对于基准测试就比较简单了,我们来测试下加法在你的电脑上的性能如何?

    1. func Benchmark_Add(b *testing.B) {
    2. var n int
    3. for i := 0; i < b.N; i++ {
    4. n++
    5. }
    6. }

    命令行使用如下命令:

    C:\Users\Tony\xxx>go test -v -bench=. -benchtime=5s xxx_test.go
    goos: windows
    goarch: amd64
    cpu: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
    Benchmark_Add
    Benchmark_Add-4         1000000000               0.2830 ns/op
    PASS
    ok      command-line-arguments  0.556s 

    其中benchtime=5s是自定义测试时间5秒,我们可以看到在什么环境下的性能,计算了多少次,每次操作需要耗时多少。
    当然也可以在vscode里面直接点击 run benchmark | debug benchmark 如下图: 

    内存测试

    对于一些操作,我们想测试其占用内存的情况,如下:

    1. func Benchmark_Alloc(b *testing.B) {
    2. for i := 0; i < b.N; i++ {
    3. fmt.Sprintf("%d ", i)
    4. }
    5. }

    C:\Users\Tony\xxx>go test -v -bench=Alloc -benchmem xxx_test.go
    goos: windows
    goarch: amd64
    cpu: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
    Benchmark_Alloc
    Benchmark_Alloc-4       11920632                97.68 ns/op           17 B/op          1 allocs/op
    PASS
    ok      command-line-arguments  1.510s

    计算次数:11920632,每次操作耗时97.68 ns,然后就是每次操作需要占17个字节
    同样的在vscode里面,直接点击 run benchmark | debug benchmark 即可,如下图:

    有兴趣的伙伴,也可以加入我们的社区,交流讨论:https://bbs.csdn.net/forums/gogogo

    一起学习进步,成为技术达人!

  • 相关阅读:
    程序员接单都在用这六大平台,你呢?
    数据在内存中的存储(2)
    2024年阿里云2核4G配置服务器测评_ECS和轻量性能测评
    hadoop 3.x大数据集群搭建系列5-安装Flink
    批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)
    数据结构课设:基于字符串模式匹配算法的病毒感染检测问题
    关于git hooks
    (C)一些题2
    LabVIEW太赫兹波扫描成像系统
    vue实现调用手机拍照、录像功能
  • 原文地址:https://blog.csdn.net/weixin_41896770/article/details/127935338