CSV would be better than JSON
This commit is contained in:
parent
35ba59c5d6
commit
29dc10bf36
4 changed files with 41 additions and 22 deletions
|
|
@ -1,12 +1,15 @@
|
|||
{-# LANGUAGE RecordWildCards #-}
|
||||
|
||||
module Bench (Benchmark (..), benchmarkScript, specificationTreeToBenchmarks) where
|
||||
|
||||
import Codec.Serialise (serialise)
|
||||
import Data.Aeson hiding (Success)
|
||||
import Data.ByteString.Lazy qualified as LBS
|
||||
import Data.ByteString.Short qualified as SBS
|
||||
import Data.Csv (ToNamedRecord, DefaultOrdered, toNamedRecord, namedRecord, header, headerOrder, (.=))
|
||||
import Data.List (intercalate)
|
||||
import Data.Maybe (fromJust)
|
||||
import Data.Text (Text, pack)
|
||||
import GHC.Generics (Generic)
|
||||
import Plutus.V1.Ledger.Api (
|
||||
ExBudget (ExBudget),
|
||||
ExCPU,
|
||||
|
|
@ -34,25 +37,20 @@ data Benchmark = Benchmark
|
|||
, bScriptSize :: Int
|
||||
-- ^ The on-chain size of a script.
|
||||
}
|
||||
deriving stock (Show, Eq, Ord)
|
||||
deriving stock (Show, Eq, Ord, Generic)
|
||||
|
||||
instance FromJSON Benchmark where
|
||||
parseJSON (Object v) =
|
||||
Benchmark <$> v .: "name"
|
||||
<*> v .: "cpu"
|
||||
<*> v .: "mem"
|
||||
<*> v .: "size"
|
||||
parseJSON _ = mempty
|
||||
|
||||
instance ToJSON Benchmark where
|
||||
toJSON (Benchmark name cpu mem size) =
|
||||
object
|
||||
instance ToNamedRecord Benchmark where
|
||||
toNamedRecord (Benchmark {..}) =
|
||||
namedRecord
|
||||
[ "name" .= name
|
||||
, "cpu" .= cpu
|
||||
, "mem" .= mem
|
||||
, "size" .= size
|
||||
, "cpu" .= bCPUBudget
|
||||
, "mem" .= bMemoryBudget
|
||||
, "size" .= bScriptSize
|
||||
]
|
||||
|
||||
instance DefaultOrdered Benchmark where
|
||||
headerOrder _ = header ["name", "cpu", "mem", "size"]
|
||||
|
||||
benchmarkScript :: String -> Script -> Benchmark
|
||||
benchmarkScript name script = Benchmark (pack name) cpu mem size
|
||||
where
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
module Main (main) where
|
||||
|
||||
import Bench (specificationTreeToBenchmarks)
|
||||
import Data.Aeson.Text (encodeToLazyText)
|
||||
import Data.Csv (encodeDefaultOrderedByName)
|
||||
import Data.Text.Lazy.Encoding (decodeUtf8)
|
||||
import Data.Text.Lazy.IO as I
|
||||
import Spec.AuthorityToken qualified as AuthorityToken
|
||||
import Spec.Effect.GovernorMutation qualified as GovernorMutation
|
||||
|
|
@ -17,8 +18,8 @@ import Prelude
|
|||
|
||||
main :: IO ()
|
||||
main = do
|
||||
I.writeFile "bench.json" $
|
||||
encodeToLazyText $
|
||||
I.writeFile "bench.csv" $
|
||||
(decodeUtf8 . encodeDefaultOrderedByName) $
|
||||
specificationTreeToBenchmarks $
|
||||
group
|
||||
"Benchmark"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue