为了账号安全,请及时绑定邮箱和手机立即绑定

Go-lang测试,Benchmark上的Parallel Setting是什么意思?

Go-lang测试,Benchmark上的Parallel Setting是什么意思?

慕斯709654 2022-03-02 19:26:09
在https://golang.org/pkg/testing/中描述了我们可以使用testing.B.RunParallel()函数在并行设置中运行基准测试。我尝试编写简单的测试代码:func BenchmarkFunctionSome(b *testing.B) {    for i := 0; i < b.N; i++ {        SomeFunction()    }}然后我把它改成使用RunParallel()func BenchmarkFunctionSome(b *testing.B) {    b.RunParallel(func(pb *testing.PB) {        for pb.Next() {            SomeFunction()        }    })}并且使用RunParallel()的比第一个基准要慢。实际上,基准测试中并行设置的含义是什么?如果我使用它为什么会变慢RunParallel()?
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

第一个基准测试中的 for 循环让所有测试按顺序运行,一次一个,性能是时间除以迭代次数。

RunParallel 基准在可用线程之间划分迭代。性能的计算类似,可能是每个组的平均值。这一点是几个(确切的 # 基于您的 GOMAXPROCS 设置)测试迭代同时运行。这在测试具有共享资源和锁定的功能时特别有用,这些功能可能单独运行良好,但在并发运行时会引入性能问题。


查看完整回答
反对 回复 2022-03-02
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

这取决于里面有什么

SomeFunction()

如果它只是一个空函数或简单的计算,串行基准测试会更快。但如果是繁重的计算或 IO,

RunParallel()

基准会更快。


查看完整回答
反对 回复 2022-03-02
  • 2 回答
  • 0 关注
  • 279 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信