我使用了库标准和 cmdargs。
当我在没有 cmdargs 的情况下完全编译程序并运行它时,例如 ./prog --help 然后我从标准中得到一些关于可能选项和运行次数等的不需要的响应。
当我如下编译并运行它时,命令行选项首先由我的代码拾取,然后按标准读取。然后,Criterion 报告并错误告诉我选项 --byte 是未知的。我在标准文档中没有看到如何关闭或解决此问题。有没有办法清除我读过的命令行选项?否则,我将需要使用例如 CPUTime 而不是标准,这对我来说是可以的,因为我确实需要标准提供的额外功能和数据的负载。
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
import System.Console.CmdArgs
data Strlen = Strlen {byte :: Int} deriving (Data, Typeable, Show)
strlen = cmdArgsMode $ Strlen {byte = def} &= summary "MessagePack benchmark v0.04"
main = do
n <- cmdArgsRun strlen
let datastring = take (byte n) $ randomRs ('a','z') (mkStdGen 3)
putStrLn "Starting..."
conn <- connect "192.168.35.62" 8081
defaultMain [bench "sendReceive" $ whnfIO (mywl conn datastring)]