返回介绍

11.8.2 错误的基准测试函数

发布于 2024-08-14 12:50:31 字数 2131 浏览 0 评论 0 收藏 0

看一下下面的基准测试函数代码:

func BenchmarkFiboI(b *testing.B) {
    for i := 0; i < b.N; i++ {
        _ = fibo1(i)
    }
}

BenchmarkFibo() 函数有一个有效的方法名和正确的签名。然而,坏消息是这个基准测试函数是错的,并且您执行 go test 命令后不能从它获得任何输出。

原因是根据上一节的描述,随着 b.N 值的增加,由于 for循环这个基准测试函数的运行次数也会增加。这一事实阻止了 BenchmarkFiboI() 收敛于一个稳定的数字,从而妨碍了函数完成并返回。

由于算法原因,下面的基准测试函数也实现错了:

func BenchmarkfiboII(b *testing.B) {
    for i := 0 ; i < b.N ; i++ {
        _ = fibo2(b.N)
    }
}

相反,下面俩个基准测试函数的实现没有错误:

func BenchmarkFiboIV(b *testing.B) {
    for i := 0; i < b.N; i++ {
        _ = fibo3(10)
    }
}

func BenchmarkFiboIII(b *testing.B) {
    _ = fibo3(b.N)
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文