packages feed

ppad-bolt1-0.1.0: bench/Main.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Criterion.Main
import Fixtures
import Lightning.Protocol.BOLT1

main :: IO ()
main = defaultMain [
    bgroup "primitives" [
      bench "encode_u64" $ nf encode_u64 0x0102030405060708
    , bench "decode_u64" $ nf decode_u64 "\x01\x02\x03\x04\x05\x06\x07\x08"
    , bench "encode_tu64" $ nf encode_tu64 0x010203
    , bench "decode_tu64" $ nf decode_tu64 "\x01\x02\x03"
    , bench "encode_bigsize (9 bytes)" $ nf encode_bigsize 0x100000000
    , bench "decode_bigsize (9 bytes)" $
        nf decode_bigsize "\xff\x00\x00\x00\x01\x00\x00\x00\x00"
    ]
  , bgroup "tlv" [
      bench "encode_tlv_stream (21 records)" $ nf encode_tlv_stream tlvs
    , bench "decode_tlv_stream (21 records)" $
        nf (decode_tlv_stream (const False)) tlvs_bytes
    ]
  , bgroup "messages" [
      bench "encode init" $ nf encode_message init_msg
    , bench "decode init" $ nf decode_message init_bytes
    , bench "encode ping" $ nf encode_message ping_msg
    , bench "decode ping" $ nf decode_message ping_bytes
    , bench "encode error (with tlvs)" $ nf encode_message error_msg
    , bench "decode error (with tlvs)" $ nf decode_message error_bytes
    ]
  ]