当前位置: 首页 > 面试题库 >

Go基准测试中的alloc / op和B / op是什么意思?

须旭
2023-03-14
问题内容

使用进行基准测试时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

根据我的理解:

  1. 10000是迭代次数for i := 0; i < b.N; i++ {
  2. XXX ns/op 是一次迭代完成所需的大概时间

但即使阅读文档,我无法找出什么B/opallocs/op意味着什么。

我的猜测是allocs / op与垃圾回收和内存分配有关(越少越好)。

任何人都可以很好地解释这些值的含义。也很高兴知道为什么要减少这些步骤以及减少它们的主要步骤(我意识到这是针对测试的,但是在某些情况下可能会有一些通用的提示)


问题答案:

allocs/op 表示每个操作(单次迭代)发生了多少个不同的内存分配。

B/op每个操作分配了多少字节。



 类似资料:
  • 我已经开始使用Akka Streams和Op Rabbit,我有点困惑。 我需要根据谓词拆分流,然后将它们组合起来,就像我在创建图形和使用分区和合并时所做的那样。 我已经能够使用GraphDSL. Builder做这样的事情,但似乎无法让它与AckedSource/Flow/Sink一起工作 图表如下所示: 我不确定是否拆分什么时候是我应该使用的,因为我总是需要正好2个流。 这是一个不进行分区且不

  • Note: Functions taking Tensor arguments can also take anything accepted by tf.convert_to_tensor. Contents Constants, Sequences, and Random Values Constant Value Tensors tf.zeros(shape, dtype=tf.float3

  • 首先所有的包都应该有一定的必要文档,然后同样重要的是对包的测试。 在第 3 章中提到了 Go 的测试工具 gotest, 我们已经在 9.8 节中使用过了。这里我们会用更多的例子进行详细说明。 名为 testing 的包被专门用来进行自动化测试,日志和错误报告。并且还包含一些基准测试函数的功能。 备注:gotest 是 Unix bash 脚本,所以在 Windows 下你需要配置 MINGW 环

  • 问题内容: 我听说过使用过这个术语,但是我不确定它的含义,因此: 它是什么意思,不是什么意思? 什么是IS和IS N’T微基准测试的一些示例? 微基准测试有哪些危险,如何避免? (或者这是好事吗?) 问题答案: 它的含义与锡罐上所说的完全一样-它正在衡量“小”东西的性能,例如对操作系统内核的系统调用。 危险在于人们可能会使用从微基准测试中获得的任何结果来指示优化。众所周知: 我们应该忘掉效率低下的

  • PREREQUISITES: Some familiarity with C++. Must have downloaded TensorFlow source, and be able to build it. If you'd like to incorporate an operation that isn't covered by the existing library, you can

  • 预备知识: 对 C++ 有一定了解. 已经下载 TensorFlow 源代码并有能力编译它. 如果现有的库没有涵盖你想要的操作, 你可以自己定制一个. 为了使定制的 Op 能够兼容原有的库 , 你必须做以下工作: 在一个 C++ 文件中注册新 Op. Op 的注册与实现是相互独立的. 在其注册时描述了 Op 该如何执行. 例如, 注册 Op 时定义了 Op 的名字, 并指定了它的输入和输出. 使用