ライブラリの基準と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)]