私はライブラリの基準とcmdargsを使用しました。基準ライブラリで選択されたコマンドラインオプション
私はcmdargsを使わずにプログラムを完全にコンパイルして実行します。 ./prog --help次に、実行可能なオプションと実行回数などの嫌な応答を受け取ります。
以下のようにコンパイルして実行すると、コマンドラインオプションはまず自分のコードで取得されます基準で読む。その後、Criteriaは、オプション--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)]
これは私のコードスニペットにどのように適用するのか分かりません。 –
@JFritschさて、私はcmdargsドキュメントを見てきました。私が理解していれば、あなたのタイプ( 'Strlen')に他の引数のフィールドを追加し、' args'でそれらを収集しなければなりません。しかし、私はcmdargsが未知のオプションで何をしているのかよくわかりません。基準をデフォルトの設定だけにしたい場合、 'withArgs [] $ defaultMain ...'は単純で動作します。固定argsを基準に渡す場合は、 'withArgs [" -s "、" 200 "]'など。 –
System.Environment(withArgs)をインポートしてももちろん動作します。結果として得られるバイナリ・リーンを維持するよりエレガントなものがあるのだろうかと思います。 –