堆栈运行单个基准

时间:2019-04-04 05:33:14

标签: haskell benchmarking haskell-stack

我的阴谋文件中定义了多个基准:

benchmark my-gauge-bench
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      bench/gauge
  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -Wall -threaded -rtsopts -with-rtsopts=-N
  build-depends:
      QuickCheck
    , base >=4.10 && <10
    , bytestring
    , gauge
  default-language: Haskell2010

benchmark my-weigh-bench
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules:
      Paths_pkg_core_gen
  hs-source-dirs:
      bench/weigh
  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -Wall
  build-depends:
      QuickCheck
    , base >=4.10 && <10
    , bytestring
    , weigh

如何使用Stack仅运行单个基准测试(如my-guage-bench)?

2 个答案:

答案 0 :(得分:2)

您需要执行以下操作才能运行一个基准测试:

stack bench package-name:my-guage-bench

答案 1 :(得分:2)

这适用于stack中的所有目标,无论是测试,基准测试还是可执行文件。

堆栈中有一个很棒的小命令,可以帮助您列出所有可用的目标,而无需借助my-package.cabalpackage.yaml文件进行挖掘。它对于多包项目特别有用,并且适用于packages:的{​​{1}}字段中列出的所有包:

stack.yaml

现在我们知道了可以调用特定基准的列表

$ stack ide targets
my-package:lib
my-package:test:doctests
my-package:test:tests
my-package:bench:weight
my-package:bench:gauge
another-package:lib
another-package:exe:my-cool-executable
another-package:test:doctests
another-package:test:tests
another-package:bench:weight
another-package:bench:criterion