Параметры командной строки, выбранные библиотекой критериев
Я использовал критерий библиотеки и 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)]
2 ответа
Использование System.Environment.withArgs
, Сначала проанализируйте аргументы командной строки с помощью cmdArgs
, а затем передать то, что вы не привыкли criterion
:
main = do
(flags, remaining) <- parseArgsHowever
act according to flags
withArgs remaining $
defaultMain [ ... ]
Посмотрите на источник критерия. Вы должны быть в состоянии написать свой собственный defaultMainWith
функция, которая обрабатывает аргументы так, как вы хотите, включая их игнорирование или игнорирование неизвестных аргументов, и т. д.