我正在尝试使用Go软件包“时间”来对我的程序中的函数进行基准测试。一直在四处搜索,而人们似乎使用time.NanoSeconds() - 但我认为这个函数已经不在时间包中了?使用StopWatch或类似的基准测试代码
我需要的是启动和停止计时器,并打印出值的简单方法。
我正在尝试使用Go软件包“时间”来对我的程序中的函数进行基准测试。一直在四处搜索,而人们似乎使用time.NanoSeconds() - 但我认为这个函数已经不在时间包中了?使用StopWatch或类似的基准测试代码
我需要的是启动和停止计时器,并打印出值的简单方法。
使用testing包你* _test.go内的现有功能:
func BenchmarkMyFunc(b *testing.B) {
for i := 0; i < b.N; i++ {
myBecnhmarkedFunction()
}
}
,并调用go test -bench RE
(RE是一个正则表达式来选择长椅,像B
因为它意味着*B*
)通常在包装内/工具目录
或明确从代码中的任何地方 - 使用Benchmark功能。
感谢您的回答!就在我阅读你的回复之前,我发现了一个简单的例子,说明如何使用Go的时间包,这对我来说已经足够了。我也将看看基准测试功能。 'T0:= time.Now()expensiveCall()T1:= time.Now()fmt.Printf( “调用了%V运行\ n”,t1.Sub(T0))' – shaz 2012-04-06 20:04:40
这种方法对于'expensiveCall()'执行足够长的时间是足够的/好的/足够精确的,就像机器时间分辨率的数量级的倍数一样。测试包可以通过自适应地更改b.N参数来处理纳秒精确的定时。 – zzzz 2012-04-06 20:14:16
@shaz你也可以使用time.Since:t0:= time.Now(); expensiveCall(); println(“Time:”,time.Since(t0)) – BurntSushi5 2012-04-06 22:38:10
我相信现在的功能等同于'time.Now()。UnixNano()'。 – Ashe 2012-04-06 22:56:46