我对 Haskell 很陌生。
我正在尝试使用 Criterion 来获取性能数据。我的主要模块如下:
module Main where
import SingleThreadedBlockChain
import Data.Time.Clock.System (getSystemTime)
import System.IO (readFile)
import System.TimeIt
import System.Environment ( getArgs )
import Criterion.Main
main :: IO ()
main = do
args <- getArgs
time <- getSystemTime
content <- readFile (args !! 0)
defaultMain [
bench "putStrLn" $ nfIO (putStrLn ("The last block is " ++ show (last (makeBlockChain "" (lines content) 0 (show time)))))
]
我正在尝试使用 Criterion 文档以及我在 StackOverflow 上看到的内容来实现此功能。我收到以下错误:
Error: none of the specified names matches a benchmark
我以为我会进行 IO 基准测试。从我看到的示例来看,名称并不总是与基准匹配。有人可以解释一下这些名称应该如何与基准相关吗?
最佳答案
Criterion 的 defaultMain
进行自己的 cli 参数解析。它使用第一个参数来尝试匹配要运行的特定基准名称(在您的情况下,您只有 "putStrLn"
)。如果您想进行自己的参数解析,您可以在传递给 defaultMain
之前更改参数,如下所示:
args <- getArgs
withArgs (drop 1 args) $ defaultMain ...
这将隐藏 defaultMain
中的第一个参数,以便您可以随意使用它。
关于haskell - 在 Haskell 中使用标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66792723/