go基准中的allocs/op和B/op是什么意思?
当我使用go基准中的allocs/op和B/op是什么意思?,go,benchmarking,Go,Benchmarking,当我使用go test-v-bench=运行基准测试时-benchmem,我看到了以下结果 f1 10000 120860 ns/op 2433 B/op 28 allocs/op f2 10000 120288 ns/op 2288 B/op 26 allocs/op 根据我的理解: 10000是i:=0的迭代次数;i
go test-v-bench=运行基准测试时-benchmem
,我看到了以下结果
f1 10000 120860 ns/op 2433 B/op 28 allocs/op
f2 10000 120288 ns/op 2288 B/op 26 allocs/op
根据我的理解:
10000
是i:=0的迭代次数;i
XXX ns/op
是一次迭代完成所需的大致时间B/op
和allocs/op
是什么意思
我猜想allocs/op与垃圾收集和内存分配有关(越少越好)
有人能很好地解释一下这些值的含义吗?另外,如果能知道为什么要增加这些值以及减少这些值的主要步骤(我知道这是特定于测试的,但可能有一些通用的提示在很多情况下都有效)
allocs/op
意味着每个操作发生了多少不同的内存分配(单次迭代)
B/op
是每个op分配了多少字节。是在桩帧还是堆中进行的B/op分配?还是GO GC必须清理的内存量?是否有正式的文档来解释这些度量?内存分配意味着什么?这是否意味着为变量设置一个值:否,这表示内存已分配,未修改。为变量设置一个值只会修改预分配内存的内容。@RyanLv内存分配意味着从操作系统获得更多内存。这样做会减少系统和其他程序的可用内存。