gpt4 book ai didi

Golang 基准测试 : why does allocs/op show 0 B/op?

转载 作者:数据小太阳 更新时间:2023-10-29 03:45:19 31 4
gpt4 key购买 nike

这是基准测试的代码片段:

// bench_test.go

package main

import (
"testing"
)

func BenchmarkHello(b *testing.B) {
for i := 0; i < b.N; i++ {
a := 1
a++
}
}

指标 allocs/op 显示 0 B/op。变量 a 是一个 int 类型,不会占用太多内存,但它不应该占用零 B.

> go test -bench=. -benchmem
goos: darwin
goarch: amd64
pkg: a
BenchmarkHello-4 2000000000 0.26 ns/op 0 B/op 0 allocs/op
PASS
ok a 0.553s

最佳答案

Why is this metric allocs/ops zero?


package main

import (
"testing"
)

func BenchmarkHello(b *testing.B) {
for i := 0; i < b.N; i++ {
a := 1
a++
}
}

allocs/ops 平均值只计算堆分配,不计算堆栈分配。

分配/操作平均值向下舍入到最接近的整数值。

Go gc 编译器是一个优化编译器。由于

{
a := 1
a++
}

没有完成任何事情,它被省略了。

关于Golang 基准测试 : why does allocs/op show 0 B/op?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56832207/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com