侧边栏壁纸
博主头像
SeaDream乄造梦

Dream,Don't stop a day of hard and don't give up a little hope。 ——不停止一日努力&&不放弃一点希望。

  • 累计撰写 74 篇文章
  • 累计创建 21 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

单元测试之性能测试

SeaDream乄造梦
2025-01-11 / 0 评论 / 0 点赞 / 15 阅读 / 1,192 字
温馨提示:
亲爱的,如果觉得博主很有趣就留下你的足迹,并收藏下链接在走叭

coding

package go_basic

import "testing"

func MakeSliceWithoutAlloc() []int {
    var newSlice []int

    for i := 0; i < 100000; i++ {
       newSlice = append(newSlice, i)
    }
    return newSlice
}

// MakeSliceWithPreAlloc 通过预分配Slice的存储空间构造
func MakeSliceWithPreAlloc() []int {
    var newSlice []int

    newSlice = make([]int, 0, 100000)
    for i := 0; i < 100000; i++ {
       newSlice = append(newSlice, i)
    }

    return newSlice
}

func BenchmarkMakeSliceWithoutAlloc(b *testing.B) {
    for i := 0; i < b.N; i++ {
       MakeSliceWithoutAlloc()
    }
}

func BenchmarkMakeSliceWithPreAlloc(b *testing.B) {
    for i := 0; i < b.N; i++ {
       MakeSliceWithPreAlloc()
    }
}

输出:

// 没有预分配内存空间的  BenchmarkMakeSliceWithoutAlloc
goos: windows
goarch: amd64
pkg: codes/go_basic
cpu: 12th Gen Intel(R) Core(TM) i5-12400F
BenchmarkMakeSliceWithoutAlloc
BenchmarkMakeSliceWithoutAlloc-12                1873            641760 ns/op
PASS

Debugger finished with the exit code 0



// 有预分配内存空间的    BenchmarkMakeSliceWithPreAlloc
goos: windows
goarch: amd64
pkg: codes/go_basic
cpu: 12th Gen Intel(R) Core(TM) i5-12400F
BenchmarkMakeSliceWithPreAlloc
BenchmarkMakeSliceWithPreAlloc-12                6379            188825 ns/op
PASS

Debugger finished with the exit code 0

基准测试结果

BenchmarkMakeSliceWithPreAlloc:这是测试的名称,表示测试创建带有预分配的切片(slice)的性能。
BenchmarkMakeSliceWithPreAlloc-12:测试的具体实例,-12表示测试在12个CPU核心上运行。
6379:表示测试运行了6379次。
188825 ns/op:表示每次操作的平均时间是188825纳秒(ns)。

0

评论区