packages feed

ppad-bolt7-0.1.0: bench/Main.hs

-- |
-- Module: Main
-- Copyright: (c) 2025 Jared Tobin
-- License: MIT
-- Maintainer: Jared Tobin <jared@ppad.tech>
--
-- Criterion timing benchmarks for ppad-bolt7.

module Main where

import Criterion.Main
import Fixtures
import Lightning.Protocol.BOLT7
import System.Exit (exitFailure)

main :: IO ()
main = case fixtures of
  Nothing -> putStrLn "fixtures failed to build" >> exitFailure
  Just f  -> defaultMain [
      bgroup "decode" [
        bench "channel_announcement" $
          nf decode_channel_announcement (f_ann_bytes f)
      , bench "node_announcement" $
          nf decode_node_announcement (f_node_bytes f)
      , bench "channel_update" $ nf decode_channel_update (f_upd_bytes f)
      , bench "channel_update (decode_message)" $
          nf (decode_message 258) (f_upd_bytes f)
      , bench "query_short_channel_ids (1000 ids, flags)" $
          nf decode_query_short_channel_ids (f_qsci_bytes f)
      , bench "reply_channel_range (1000 ids, timestamps, checksums)" $
          nf decode_reply_channel_range (f_rcr_bytes f)
      ]
    , bgroup "encode" [
        bench "channel_announcement" $
          nf encode_channel_announcement (f_ann f)
      , bench "node_announcement" $ nf encode_node_announcement (f_node f)
      , bench "channel_update" $ nf encode_channel_update (f_upd f)
      , bench "query_short_channel_ids (1000 ids, flags)" $
          nf encode_query_short_channel_ids (f_qsci f)
      , bench "reply_channel_range (1000 ids, timestamps, checksums)" $
          nf encode_reply_channel_range (f_rcr f)
      ]
    , bgroup "hash" [
        bench "channel_announcement_hash" $
          nf channel_announcement_hash (f_ann f)
      , bench "channel_update_hash" $ nf channel_update_hash (f_upd f)
      , bench "channel_update_checksum" $
          nf channel_update_checksum (f_upd f)
      ]
    , bgroup "verify" [
        bench "verify_channel_announcement" $
          nf verify_channel_announcement (f_ann f)
      , bench "verify_node_announcement" $
          nf verify_node_announcement (f_node f)
      , bench "verify_channel_update" $
          nf (verify_channel_update (f_upd_key f)) (f_upd f)
      ]
    , bgroup "validate" [
        bench "validate_reply_channel_range (1000 ids)" $
          nf validate_reply_channel_range (f_rcr f)
      ]
    ]