0


Benchmark 第二篇

  1. benchmark****个人理解
  2. 基准测试
  3. 单元测试

我个人理解中的benchmark(基准测试),是一种依据某些标准,通过运行一个程序或一组代码来测试其性能的行为。

下面我将用go testing库提供的benchmark来测试两段简单代码的性能,对比两者差异。

先创建项目

包select中包含两个go程序,add.go存放着两个被测函数add和mul,benchmark_test.go则放着基准测试样例(测试样例的程序名必须以_test结尾)

两个函数非常简单,都是求n个x的和

第一个程序(add.go)

第二个程序(benchmark_test.go)

其中b.N是基准测试框架提供的,表示循环的次数。因为需要反复调用测试的代码,才可以评估性能运行时,基准测试框架将按照自动分配N的大小。

接着打开命令行窗口(快捷键win+r,在弹窗输入cmd)

进入包select,并输入“go test -bench=. .” ,然后就会跳出测试结果。

  1. go test 命令默认不执行 benchmark 测试,需要加上**-bench** 参数。
  2. 结果还会显示一些当前计算机的信息,操作系统和电脑位数等等。
  3. 第6行中显示基准测试名称,277192720表示测试的次数,也就是 testing.B 结构中提供给程序使用的N。“4.364 ns/op”表示每一个操作耗费多少时间(纳秒)。(即add函数进行了277192720次,每次求和花费了4.364 ns)。可以此类推第7行数据。
  4. 通过对比可知,mul函数的运行速度远快于add函数。

在学习基准测试时,我发现go testing库还提供单元测试的框架,就顺带学习了一下单元测试。

单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。

下面我用单元测试来检测大小比较函数的正确性。

单元测试和基准测试大同小异,前几个步骤都是创建项目然后编写被测函数和测试样例,不同的地方在于测试样例的写法和命令行的输入。

select.go存放比较函数,u_test.go存放测试样例

变化:

  1. BenchmarkXxx(b *testing.B) → TestXxx (t *testing.T)
  2. 没有了for循环和b.N

进入包,并输入“go test -v”,跳出测试结果。

第3行结果说明,函数正确。

标签: 测试工具

本文转载自: https://blog.csdn.net/m0_62180688/article/details/124649340
版权归原作者 Yodng 所有, 如有侵权,请联系我们删除。

“Benchmark 第二篇”的评论:

还没有评论