From 55c4b429a89a8960101635a2070a331954b535f2 Mon Sep 17 00:00:00 2001 From: Julien Moutinho <julm+hjugement@autogeree.net> Date: Sun, 12 May 2019 11:55:03 +0000 Subject: [PATCH] protocol: polish benchmarks --- hjugement-protocol/benchmarks/Election.hs | 24 ++++++++++++------- hjugement-protocol/benchmarks/Utils.hs | 2 ++ hjugement-protocol/benchmarks/html/.gitignore | 1 + 3 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 hjugement-protocol/benchmarks/html/.gitignore diff --git a/hjugement-protocol/benchmarks/Election.hs b/hjugement-protocol/benchmarks/Election.hs index 8106b0d..c93e849 100644 --- a/hjugement-protocol/benchmarks/Election.hs +++ b/hjugement-protocol/benchmarks/Election.hs @@ -3,6 +3,7 @@ module Election where import qualified Data.List as List import qualified Data.Text as Text +import qualified Text.Printf as Printf import Voting.Protocol import Utils @@ -20,14 +21,14 @@ makeElection nQuests nChoices = Election (<$> [1..nQuests]) $ \quest -> Question { question_text = Text.pack $ "quest"<>show quest , question_choices = (<$> [1..nChoices]) $ \choice -> Text.pack $ "choice"<>show choice - , question_mini = zero - , question_maxi = sum $ List.replicate nChoices one + , question_mini = one + , question_maxi = one -- sum $ List.replicate nChoices one } } where election_uuid = UUID "xLcs7ev6Jy6FHH" makeVotes :: Election q -> [[Bool]] makeVotes Election{..} = - [ [ True | _choice <- question_choices quest ] + [ True : List.tail [ False | _choice <- question_choices quest ] | quest <- election_questions ] @@ -42,10 +43,18 @@ makeBallot elec = where seed = 0 +titleElection :: Election q -> String +titleElection Election{..} = + Printf.printf "(questions=%i)Ã(choices=%i)==%i" + nQuests nChoices (nQuests * nChoices) + where + nQuests = List.length election_questions + nChoices = List.foldr max 0 $ List.length . question_choices <$> election_questions + benchEncryptBallot :: forall q. Params q => Int -> Int -> Benchmark benchEncryptBallot nQuests nChoices = env setupEnv $ \ ~elec -> - bench ("(nQuests="<>show nQuests<>")*(nChoices="<>show nChoices<>")=="<>show (nQuests * nChoices)) $ + bench (titleElection elec) $ nf makeBallot elec where setupEnv = do @@ -55,7 +64,7 @@ benchEncryptBallot nQuests nChoices = benchVerifyBallot :: forall q. Params q => Int -> Int -> Benchmark benchVerifyBallot nQuests nChoices = env setupEnv $ \ ~(elec,ballot) -> - bench ("(nQuests="<>show nQuests<>")*(nChoices="<>show nChoices<>")=="<>show (nQuests * nChoices)) $ + bench (titleElection elec) $ nf (verifyBallot elec) ballot where setupEnv = do @@ -65,11 +74,10 @@ benchVerifyBallot nQuests nChoices = benchmarks :: [Benchmark] benchmarks = - -- let inputs = [(1,2), (5,5), (10,5), (5,10){-, (10,6), (10,7), (15,5)-}] in let inputs = [ (nQ,nC) - | nQ <- [1,5,10,15{-,20,25-}] - , nC <- [5..7] + | nQ <- [1,5,10,15,20,25] + , nC <- [5,7] ] in [ bgroup "WeakParams" [ bgroup "encryptBallot" diff --git a/hjugement-protocol/benchmarks/Utils.hs b/hjugement-protocol/benchmarks/Utils.hs index a4b0cb3..45eba67 100644 --- a/hjugement-protocol/benchmarks/Utils.hs +++ b/hjugement-protocol/benchmarks/Utils.hs @@ -16,6 +16,8 @@ module Utils , Text , Word8 , Num, Fractional(..), Integral(..), Integer, fromIntegral + , min + , max , Show(..) , MonadTrans(..) , ExceptT diff --git a/hjugement-protocol/benchmarks/html/.gitignore b/hjugement-protocol/benchmarks/html/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/hjugement-protocol/benchmarks/html/.gitignore @@ -0,0 +1 @@ +*.html -- 2.47.2