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