packages feed

ppad-bolt7-0.1.0: bench/Weight.hs

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

module Main where

import Fixtures
import Lightning.Protocol.BOLT7
import System.Exit (exitFailure)
import Weigh

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