英文:
Go test "-run -" flag executed tests much faster
问题
我正在查看来自https://github.com/RoaringBitmap/roaring的一些基准测试。
当使用-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
标志根据正则表达式模式运行测试,似乎有一些被排除在外的内容,但具体是什么呢?两者运行相同的测试,唯一的区别是初始开销。
英文:
I was looking at some benchmark tests from https://github.com/RoaringBitmap/roaring
When running a specific benchmark using -run -
(as mentioned in there comments):
go test -bench BenchmarkNexts -benchmem -run -
It seems to execute faster, at least running it without -run -
seems to have some initial overhead of 5 seconds also this is plotted:
==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.
As the -run
flag runs tests based on a regex pattern it seems like something is excluded here but what exactly as both run the same tests the only difference is the initial overhead.
答案1
得分: 3
> 运行 go test "-run -"
标志可以更快地执行测试。
这是预期的结果。当您不运行任何测试时,速度更快。
要查看正在执行的内容,请在 go test
命令中添加 -v
选项。
不运行任何测试:
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
> 仅运行与正则表达式匹配的测试、示例和模糊测试。
>
> -v
> 详细输出:记录所有运行的测试。
>
> 构建和测试缓存
>
> go 命令还会缓存成功的包测试结果。有关详细信息,请参阅 'go help test'。运行 'go clean -testcache' 将删除所有缓存的测试结果(但不会删除缓存的构建结果)。
英文:
> Go test "-run -" flag executed tests much faster
That is the expected result. It's faster when you don't run any tests.
To see what is being executed, add the -v
option to your go test
executions.
Run no tests:
go clean -testcache && go test -bench BenchmarkNexts -benchmem -run - -v
Run all tests:
go clean -testcache && go test -bench BenchmarkNexts -benchmem -v`
or, since -run .
is equivalent to all tests,
go clean -testcache && go test -bench BenchmarkNexts -benchmem -run . -v
> Go is a tool for managing Go source code.
>
> Testing flags
>
> -run regexp
> Run only those tests, examples, and fuzz tests matching the regular
> expression.
>
> -v
> Verbose output: log all tests as they are run.
>
> Build and test caching
>
> The go command also caches successful package test results. See 'go help test' for details. Running 'go clean -testcache' removes all cached test results (but not cached build results).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论