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

我有一个go测试文件,我在其中编写了一个基准测试函数,如下所示:


func BenchmarkStuff(b *testing.B) {

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

        stuff()

    }

}

但是,该函数需要在每次运行之前进行一些设置,并在每次运行后进行清理。我有功能,分别这样做。但我不想对设置和清理功能进行基准测试。stuff()setup()cleanup()


那么他们应该在哪里被调用呢?如果我在基准测试中调用它们,它们将被添加到结果测量中。但如果没有他们,就会失败。stuff()


萧十郎
浏览 62回答 1
1回答

慕容森

基准测试包提供重置计时器、停止计时器和启动计时器方法,以避免基准测试所需的计时初始化。如果需要初始化一次,请在开始循环之前使用:ResetTimerfunc BenchmarkStuff(b *testing.B) {&nbsp; &nbsp; setup()&nbsp; &nbsp; b.ResetTimer()&nbsp; &nbsp; for i := 0; i < b.N; i++ {&nbsp; &nbsp; &nbsp; &nbsp; stuff()&nbsp; &nbsp; }}如果需要在循环期间重新初始化,可以使用 和 来避免对该部分进行计时:StopTimerStartTimerfunc BenchmarkStuff(b *testing.B) {&nbsp; &nbsp; for i := 0; i < b.N; i++ {&nbsp; &nbsp; &nbsp; &nbsp; b.StopTimer()&nbsp; &nbsp; &nbsp; &nbsp; setup()&nbsp; &nbsp; &nbsp; &nbsp; b.StartTimer()&nbsp; &nbsp; &nbsp; &nbsp; stuff()&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go