我想对一个函数进行基准测试:test(),使用不同数量的线程处理它。
没有 goroutines:
var t1 = time.Now()
test()
var elapsed1 = time.Since(t1)
1 纳秒/操作
使用 goroutine:
runtime.GOMAXPROCS(1)
var t1 = time.Now()
go test()
var elapsed1 = time.Since(t1)
1.10^-6 ns / 操作
我的测试功能:
func test() {
for i := 0; i < 1000000000; i++ {
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * f2
float_result = f1 / f2
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * f2
float_result = f1 / f2
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * f2
float_result = f1 / f2
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * f2
float_result = f1 / f2
float_result = f1 + f2
float_result = f1 - f2
float_result = f1 * f2
float_result = f1 / f2
}
}
在这种情况下,当我使用 goroutine 时,test() 函数是否经过良好的基准测试?
怎么可能达到0.001ns/操作?看起来速度太快了。(2.5GHz 英特尔酷睿 i7)
使用 goroutine 是否runtime.GOMAXPROCS(n)等同于使用 n 个线程?
慕田峪9158850
精慕HU
相关分类