Użyłem kryterium bibliotek i cmdargs.Opcje wiersza poleceń pobrane przez bibliotekę kryteriów
Gdy kompletnie skompiluję program bez programu cmdargs i uruchomię go np. ./prog - pomoc dostaję niechcianą odpowiedź od kryterium o możliwych opcjach i liczbie uruchomień itp.
Kiedy kompiluję i uruchamiam tak jak poniżej opcje linii poleceń są najpierw odbierane przez mój kod, następnie następnie odczytaj według kryterium. Kryterium następnie zgłosiło i błąd informujący mnie, że opcja - bajt jest nieznana. W dokumentacji kryterium nie widziałem niczego, jak można by wyłączyć lub przepracować. Czy istnieje sposób, aby wyczyścić opcje wiersza poleceń, które przeczytałem? W przeciwnym razie musiałbym użyć np. CPUTime zamiast kryterium jest dla mnie OK, ponieważ naprawdę wymagam mnóstwa dodatkowych funkcjonalności i danych, które zapewnia to kryterium.
{-# 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)]
Obawiam się, że nie rozumiem, jak zastosować to do mojego fragmentu kodu. –
@JFritsch Po prostu przyjrzałem się dokumentacjom cmdargs, jeśli dobrze je zrozumiem, musiałbyś dodać pole dla innych argumentów do twojego typu ('Strlen') i zebrać je tam z' args'. Jednak nie jestem pewien, co robi cmdargs z nieznanymi opcjami, które argumenty byłyby kryterium. Jeśli chcesz, aby kryterium używało domyślnych ustawień, 'withArgs [] $ defaultMain ...' jest proste i działa. Jeśli chcesz przekazać ustalone argumenty do kryterium, to 'withArgs [" -s "," 200 "]' np. –
Działa oczywiście, jeśli importuję System.Environment (withArgs). Zastanawiam się, czy istnieje coś bardziej eleganckiego, który utrzymuje wynikowy binarny chude. –