为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 基准测试中放置设置/拆卸的位置?

在 Go 基准测试中放置设置/拆卸的位置?

Go
萧十郎 2022-09-12 21:04:52
我有一个go测试文件,我在其中编写了一个基准测试函数,如下所示:func BenchmarkStuff(b *testing.B) {    for i := 0; i < b.N; i++ {        stuff()    }}但是,该函数需要在每次运行之前进行一些设置,并在每次运行后进行清理。我有功能,分别这样做。但我不想对设置和清理功能进行基准测试。stuff()setup()cleanup()那么他们应该在哪里被调用呢?如果我在基准测试中调用它们,它们将被添加到结果测量中。但如果没有他们,就会失败。stuff()
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

基准测试包提供重置计时器停止计时器启动计时器方法,以避免基准测试所需的计时初始化。

如果需要初始化一次,请在开始循环之前使用:ResetTimer


func BenchmarkStuff(b *testing.B) {

    setup()

    b.ResetTimer()

    for i := 0; i < b.N; i++ {

        stuff()

    }

}

如果需要在循环期间重新初始化,可以使用 和 来避免对该部分进行计时:StopTimerStartTimer


func BenchmarkStuff(b *testing.B) {

    for i := 0; i < b.N; i++ {

        b.StopTimer()

        setup()

        b.StartTimer()

        stuff()

    }

}


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信