当前位置: 首页 > 科技观察

提示:如何在Go中编写准确的基准?

时间:2023-03-21 18:12:18 科技观察

大家好,我是程序员幽灵。今天我给大家带来一篇关于基准测试的文章。一般来说,我们不应该猜测性能。在编写优化时有很多因素可以发挥作用,即使我们对结果有强烈的意见,测试它们也不是一个坏主意。然而,编写基准测试并不简单。很容易编写不准确的基准并根据它们做出错误的假设。这篇文章的目的是检查导致不准确的四个常见和特定的陷阱:不重置或暂停计时器对微基准测试做出错误的假设不注意编译器优化被观察者效应的概念所愚弄在讨论这些陷阱之前,让我们简要介绍一下回顾基准测试在Go中是如何工作的。基准测试的框架如下:funcBenchmarkFoo(b*testing.B){fori:=0;我popcunc101604)&m1x=(x&m2)+((x>>2)&m2)x=(x+(x>>4))&m4return(x*h01)>>56}这个函数接受并返回auint64。为了对这个函数进行基准测试,我们可以编写以下代码:funcBenchmarkPopcnt1(b*testing.B){fori:=0;i