使用StopWatch或类似工具对代码进行基准测试

5

我想使用Go语言的"time"包来测试程序中的一个函数。我搜索了一段时间,人们似乎使用time.NanoSeconds()函数,但是我认为这个函数不再在time包中存在了?

我需要一种简单的方法来启动和停止计时器,并打印出计时器的值。


我相信该函数现在等同于 time.Now().UnixNano() - Asherah
1个回答

9

在*_test.go文件中使用现有的testing包功能:

func BenchmarkMyFunc(b *testing.B) {
    for i := 0; i < b.N; i++ {
        myBecnhmarkedFunction()
    }
}

可以在包/工具目录内通常使用go test -bench RE(RE是选择工作台的正则表达式,如B,因为它表示*B*)进行调用。

或者可以从代码中任何位置显式使用Benchmark函数。


1
谢谢你的回答!就在我看到你的回复之前,我找到了一个使用Go语言时间包的简单示例,这对我来说已经足够了。我也会看一下基准测试函数。t0 := time.Now() expensiveCall() t1 := time.Now() fmt.Printf("The call took %v to run.\n", t1.Sub(t0)) - shaz
1
这种方法只有在expensiveCall()的执行时间足够长,比机器时间分辨率长几个数量级时才足够好/精确。测试包可以通过自适应更改b.N参数来处理纳秒级别的准确计时。 - zzzz
@shaz 你也可以使用 time.Since: t0 := time.Now(); expensiveCall(); println("Time: ", time.Since(t0)) - BurntSushi5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接