去基准测试不只测量循环?

pra*_*pan 0 benchmarking go

在我的 Go 基准测试中,我有一些设置测试数据的初始化代码,然后我有如下所示的基准测试循环。似乎输出测量整个函数的运行时间,而不仅仅是循环中的内容。那对我来说不是有用的信息。有没有办法强制测量仅循环内容的运行时间,因为那是我所关心的?这不应该很明显吗?

func BenchmarkXXX(b *testing.B){
// Some test data init code..

for i:=0; i < b.N; i++ {
      //benchmarking code..
}  
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以通过b.ResetTimer()在“测试数据初始化代码”之后调用来执行此操作。

func BenchmarkXXX(b *testing.B){
    // Some test data init code..

    b.ResetTimer()
    for i:=0; i < b.N; i++ {
        //benchmarking code..
    }
}
Run Code Online (Sandbox Code Playgroud)

参见基准