登录
首页 >  Golang >  Go问答

Golang 设置数据库基准

来源:stackoverflow

时间:2024-02-06 12:51:24 224浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Golang 设置数据库基准》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我必须编写一些需要特定数据库设置的基准测试。像这样的事情:

func BenchmarkXxx(b *testing.B) {
  fmt.Println("Setup")
  dropRecords()
  createDatabaseRecords() // this require a lot of time

  fmt.Println("Start Test")
  b.ResetTimer()
  for i := 0; i < b.N; i++ {
    fmt.Println("Loop")
    TestMyStuffs()
  }
}

运行这个基准测试,我可以在控制台中看到“setup”和“start test”打印了很多次,因此 benchmarkxxx 函数似乎被调用了很多次。有没有一种方法可以仅针对特定基准运行一次设置代码(本例中为 createdatabaserecords)?

有什么“最佳实践”可以做到这一点吗?


正确答案


您可以针对此案例使用子测试,使用 b.Run

func BenchmarkXxx(b *testing.B) {
    fmt.Println("Setup")
    setup() // this require a lot of time
    fmt.Println("Start Test")

    b.Run("mytest", func(b *testing.B) {
        b.ResetTimer()
        for i := 0; i < b.N; i++ {
            fmt.Println("Loop")
            testMyStuffs()
        }
    })

}

子基准与任何其他基准一样。至少调用一次 run 的基准测试本身不会被测量,而是会在 n=1 的情况下被调用一次。

因此 benchmarkxxx 被调用一次,以进行设置。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang 设置数据库基准》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>