首页 >后端开发 >Golang >Go test'-run -”标志执行测试的速度要快得多

Go test'-run -”标志执行测试的速度要快得多

王林
王林转载
2024-02-09 19:21:08415浏览

Go test“-run -”标志执行测试的速度要快得多

php小编苹果在介绍测试框架Go test时指出,使用"-run -"标志可以极大地提高执行测试的速度。这个标志告诉Go test只运行测试函数,而不运行任何示例代码。这样一来,测试框架就可以跳过不必要的初始化和清理过程,从而加快测试的执行速度。对于需要频繁执行测试的开发者来说,这个技巧非常有用,能够提高工作效率。

问题内容

我正在查看 https://github.com/roaringbitmap/roaring 的一些基准测试

使用 -run - 运行特定基准测试时(如评论中所述): go test -bench benchmarknexts -benchmem -run - 似乎执行得更快,至少在没有 go test -bench benchmarknexts -benchmem -run - 似乎执行得更快,至少在没有 -run - 的情况下运行它似乎有一些 5 秒的初始开销,这也被绘制出来:

==roaring==
{1,2,3,4,5,100,1000}
{3,4,1000}
{}
Cardinality:  7
Contains 3?  true
1
3
4
5
1000

Wrote  22  bytes
I wrote the content to a byte stream and read it back.
size before run optimize: 1810 bytes, and after: 38 bytes.

由于 -run 标志基于正则表达式模式运行测试,似乎这里排除了某些内容,但两者运行相同的测试到底是什么,唯一的区别是初始开销。

解决方法

go test“-run -”标志执行测试的速度要快得多

这就是预期的结果。当您不运行任何测试时,速度会更快。

要查看正在执行的内容,请将 -v 选项添加到 go test 执行中。

不运行测试:

go clean -testcache && go test -bench benchmarknexts -benchmem -run - -v

运行所有测试:

go clean -testcache && go test -bench benchmarknexts -benchmem -v`

或者,由于 -run . 相当于所有测试,

go clean -testcache && go test -bench benchmarknexts -benchmem -run . -v

go 是一个管理 go 源代码的工具。

测试标志

-run regexp
    Run only those tests, examples, and fuzz tests matching the regular
    expression.

-v
    Verbose output: log all tests as they are run.

构建并测试缓存

go 命令还会缓存成功的包测试结果。有关详细信息,请参阅“帮助测试”。运行“go clean -testcache”会删除所有缓存的测试结果(但不删除缓存的构建结果)。

以上是Go test'-run -”标志执行测试的速度要快得多的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除