【问题标题】:How do you use the benchmark flags for the go (golang) gocheck testing framework?你如何使用 go (golang) gocheck 测试框架的基准标志?
【发布时间】:2014-08-16 18:37:16
【问题描述】:

如何将标志选项用于gocheck 测试框架的基准测试?在我提供的链接中,他们提供的唯一示例似乎是运行go test -check.b,但是,他们没有提供关于它如何工作的额外 cmets,因此很难使用它。当我执行go help test 或执行go help testflag 时,我什至无法在go 文档中找到-check。特别是我想知道如何更好地使用基准测试框架并控制它运行多长时间或运行多少次迭代等。例如在他们提供的示例中:

func (s *MySuite) BenchmarkLogic(c *C) { 
    for i := 0; i < c.N; i++ { 
        // Logic to benchmark 
    } 
}

有变量 c.N.如何指定该变量?是通过实际程序本身还是通过 go test 及其标志或命令行?

在旁注中,go help testflag 的文档确实讨论了 -bench regexbenchmembenchtime t 选项,但是,它没有讨论 -check.b 选项。但是,我确实尝试按照那里的描述运行这些选项,但它并没有真正做任何我能注意到的事情。 gocheck 是否适用于 go test 的原始选项?

我看到的主要问题是没有关于如何使用 gocheck 工具或其命令的明确文档。我不小心给了它一个错误的标志,它给我一个错误消息,提示我需要有用的命令(限制描述):

  -check.b=false: Run benchmarks
  -check.btime=1s: approximate run time for each benchmark
  -check.f="": Regular expression selecting which tests and/or suites to run
  -check.list=false: List the names of all tests that will be run
  -check.v=false: Verbose mode
  -check.vv=false: Super verbose mode (disables output caching)
  -check.work=false: Display and do not remove the test working directory
  -gocheck.b=false: Run benchmarks
  -gocheck.btime=1s: approximate run time for each benchmark
  -gocheck.f="": Regular expression selecting which tests and/or suites to run
  -gocheck.list=false: List the names of all tests that will be run
  -gocheck.v=false: Verbose mode
  -gocheck.vv=false: Super verbose mode (disables output caching)
  -gocheck.work=false: Display and do not remove the test working directory
  -test.bench="": regular expression to select benchmarks to run
  -test.benchmem=false: print memory allocations for benchmarks
  -test.benchtime=1s: approximate run time for each benchmark
  -test.blockprofile="": write a goroutine blocking profile to the named file after execution
  -test.blockprofilerate=1: if >= 0, calls runtime.SetBlockProfileRate()
  -test.coverprofile="": write a coverage profile to the named file after execution
  -test.cpu="": comma-separated list of number of CPUs to use for each test
  -test.cpuprofile="": write a cpu profile to the named file during execution
  -test.memprofile="": write a memory profile to the named file after execution
  -test.memprofilerate=0: if >=0, sets runtime.MemProfileRate
  -test.outputdir="": directory in which to write profiles
  -test.parallel=1: maximum test parallelism
  -test.run="": regular expression to select tests and examples to run
  -test.short=false: run smaller test suite to save time
  -test.timeout=0: if positive, sets an aggregate time limit for all tests
  -test.v=false: verbose: print additional output

编写错误的命令是获得此工具帮助的唯一方法吗?它没有帮助标志之类的吗?

【问题讨论】:

    标签: testing go benchmarking


    【解决方案1】:

    我晚了 5 年,但要指定运行多少 N 次。使用选项-benchtime Nx

    例子:

    go test -bench=. -benchtime 100x
    

    基准测试 100 ... ns/op

    请阅读更多关于所有 go testing 标志here

    【讨论】:

      【解决方案2】:

      Description_of_testing_flags

      -bench regexp
          Run benchmarks matching the regular expression.
          By default, no benchmarks run. To run all benchmarks,
          use '-bench .' or '-bench=.'.
      

      -check.b 的工作方式与-test.bench 相同。

      例如运行所有基准测试:

      go test -check.b=.
      

      运行特定的基准测试:

      go test -check.b=BenchmarkLogic
      

      有关 Go 测试的更多信息,请参阅here

      【讨论】:

      • 请将go test -check.b=.修改为go test --check.bgo test --gocheck.b
      • 你没有回答问题:如何指定N
      • 确实回答“编写错误的命令是获得此工具帮助的唯一方法吗?”,这是我感兴趣的部分。
      猜你喜欢
      • 1970-01-01
      • 2023-02-19
      • 2010-11-12
      • 2017-09-10
      • 2010-12-16
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多