Go test中-run -参数为何能大幅提升基准测试执行速度?
Go测试中
-run -参数的作用解析 核心原因:跳过所有单元测试
Go的go test命令默认会同时执行单元测试(Test开头的函数)和你指定的基准测试。
当你执行go test -bench BenchmarkNexts -benchmem时,虽然指定了要运行的基准测试,但命令还是会先跑一遍所有项目里的单元测试——这就是你看到的5秒初始开销和额外测试输出的来源。
而-run -里的-是个正则表达式,它匹配不到任何标准的单元测试函数名(单元测试都是TestXXX格式,没有以-开头的),所以这个参数会让go test完全跳过所有单元测试,只运行你指定的基准测试,自然启动更快、没有额外开销。
验证方法
你可以去项目的*_test.go文件里找所有Test开头的函数,这些就是没加-run -时额外执行的内容。RoaringBitmap的测试套件里肯定包含不少单元测试,它们的执行带来了那5秒的耗时。
两种命令的差异
- 无
-run -:运行指定基准测试 + 全部单元测试 - 加
-run -:仅运行指定基准测试,跳过所有单元测试
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

