He utilizado el criterio de bibliotecas y cmdargs.Opciones de línea de comando recogidas por la biblioteca de criterios
Cuando compilo el programa completamente sin cmdargs y lo ejecuto, p. ./prog --help luego recibo alguna respuesta no deseada del criterio sobre las opciones posibles y el número de ejecuciones, etc.
Cuando compilo y lo ejecuto de la siguiente manera, primero selecciono las opciones de línea de comando por mi código luego lee por criterio Posteriormente, Criterion informa y comete un error al decirme que la opción --byte es desconocida. No he visto nada en la documentación del criterio de cómo se puede apagar o solucionar este problema. ¿Hay alguna manera de borrar las opciones de línea de comandos después de haberlas leído? De lo contrario, necesitaría usar, p. CPUTime en lugar de criterio, eso está bien para mí, ya que necesito realmente las cargas de funcionalidades y datos adicionales que ofrece el criterio.
{-# 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)]
Me temo que no entiendo cómo aplicar esto a mi fragmento de código. –
@JFritsch Bien, acabo de ver los documentos de cmdargs, si los incluyo bien, tendría que agregar un campo para otros argumentos a su tipo ('Strlen') y recogerlos allí con' args'. Sin embargo, no estoy seguro de qué hace cmdargs con las opciones desconocidas, qué argumentos de criterio serían. Si desea que el criterio simplemente use la configuración predeterminada, 'withArgs [] $ defaultMain ...' es simple y funciona. Si quiere pasar args fijas al criterio, 'withArgs [" -s "," 200 "]' p. Ej. –
Obra por supuesto si importo System.Environment (withArgs). Me pregunto si hay algo más elegante que mantenga la inclinación binaria resultante. –