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内存分配意味着从操作系统获得更多内存。这样做会减少系统和其他程序的可用内存。