在Haskell中使用Criterion



我是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隐藏第一个参数,以便您可以随心所欲地使用它。

相关内容

  • 没有找到相关文章

最新更新