haskell - 堆栈运行单一基准测试

标签 haskell benchmarking haskell-stack

我在 cabal 文件中定义了多个基准:

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)?

最佳答案

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

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

$ 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

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

$ stack bench my-package:bench:gauge another-package:bench:criterion

关于haskell - 堆栈运行单一基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55508536/

相关文章:

performance - 在 Linux 上本地对 Apache 进行基准测试的好方法是什么?

c++ - 英特尔 C++ 编译器和 GCC 的基准

haskell - 列出可用的堆栈构建计划

linux - 在 Amazon Linux 上使用堆栈静态链接 Haskell 程序,以在 AWS Lambda 上使用

java - 是否可以用 Java 实现 `Functor<T>`?

string - 在 Haskell 中,如何检查一个字符串是否是另一个字符串的子字符串?

macos - 在 ghci 或 ghc 中使用 gcc 而不是 clang

haskell - 文件描述符超出选择范围 - 使用 -threaded 重新编译以解决此问题

c++ - 为什么使用 istreambuf 迭代器读取文件通过重复执行会变得更快?

haskell - 无法定义多个可执行文件