go - 直接使用 testing.Benchmark() 时设置基准时间
问题描述
在 Go 中,我正在手动运行testing.Benchmarkmain()
,如下所示:
func main() {
br := testing.Benchmark(BenchmarkConnectionOpen)
fmt.Println(br.String() + br.MemString())
}
我想做的是为所有基准设置“基准时间”。我知道在测试(例如运行go test
)时,这是作为这样的标志传入的:
-benchtime=100x
但是当我在 main() 中运行时如何设置这个标志呢?我试过flag.Set()
(下)但没有骰子。
flag.Set("test.benchtime", "100x")
解决方案
弄清楚了!医生推了我一下,但花了一点时间才把它拼凑起来。文档:
// If f depends on testing flags, then Init must be used to register
// those flags before calling Benchmark and before calling flag.Parse.
//
// If f calls Run, the result will be an estimate of running all its
// subbenchmarks that don't call Run in sequence in a single benchmark.
这转化为:
func main() {
testing.Init()
flag.Parse()
br := testing.Benchmark(BenchmarkConnectionOpen)
fmt.Println(br.String() + br.MemString())
}
然后运行:
go run main.go -test.benchtime 100x
推荐阅读
- flutter - android studio 中未显示 dart 分析器工具窗口
- javascript - 如何为不同的域设置 cookie?
- docker - 使用 Docker-Compose UP 进行 Elixir 测试
- c++ - 函数中使用的函数指针的参数问题
- python-3.x - 搜索 df2.col2 中的字符串作为 df1.col1 中的子字符串,并将其替换为 df2.col1 中的字符串
- sql - SQL对具有不同日期条件的同一列求和
- typescript - 问题从导出导入 Typescript ES6
- docker - 如何清理 linux 机器上的 docker 容器和镜像
- javascript - 当按下注册按钮时,注册表会重新呈现一瞬间
- jquery - 按钮 css 禁用按钮