Main.hs (2319B)
1 -- | 2 -- Module: Main 3 -- Copyright: (c) 2025 Jared Tobin 4 -- License: MIT 5 -- Maintainer: Jared Tobin <jared@ppad.tech> 6 -- 7 -- Criterion timing benchmarks for ppad-bolt7. 8 9 module Main where 10 11 import Criterion.Main 12 import Fixtures 13 import Lightning.Protocol.BOLT7 14 import System.Exit (exitFailure) 15 16 main :: IO () 17 main = case fixtures of 18 Nothing -> putStrLn "fixtures failed to build" >> exitFailure 19 Just f -> defaultMain [ 20 bgroup "decode" [ 21 bench "channel_announcement" $ 22 nf decode_channel_announcement (f_ann_bytes f) 23 , bench "node_announcement" $ 24 nf decode_node_announcement (f_node_bytes f) 25 , bench "channel_update" $ nf decode_channel_update (f_upd_bytes f) 26 , bench "channel_update (decode_message)" $ 27 nf (decode_message 258) (f_upd_bytes f) 28 , bench "query_short_channel_ids (1000 ids, flags)" $ 29 nf decode_query_short_channel_ids (f_qsci_bytes f) 30 , bench "reply_channel_range (1000 ids, timestamps, checksums)" $ 31 nf decode_reply_channel_range (f_rcr_bytes f) 32 ] 33 , bgroup "encode" [ 34 bench "channel_announcement" $ 35 nf encode_channel_announcement (f_ann f) 36 , bench "node_announcement" $ nf encode_node_announcement (f_node f) 37 , bench "channel_update" $ nf encode_channel_update (f_upd f) 38 , bench "query_short_channel_ids (1000 ids, flags)" $ 39 nf encode_query_short_channel_ids (f_qsci f) 40 , bench "reply_channel_range (1000 ids, timestamps, checksums)" $ 41 nf encode_reply_channel_range (f_rcr f) 42 ] 43 , bgroup "hash" [ 44 bench "channel_announcement_hash" $ 45 nf channel_announcement_hash (f_ann f) 46 , bench "channel_update_hash" $ nf channel_update_hash (f_upd f) 47 , bench "channel_update_checksum" $ 48 nf channel_update_checksum (f_upd f) 49 ] 50 , bgroup "verify" [ 51 bench "verify_channel_announcement" $ 52 nf verify_channel_announcement (f_ann f) 53 , bench "verify_node_announcement" $ 54 nf verify_node_announcement (f_node f) 55 , bench "verify_channel_update" $ 56 nf (verify_channel_update (f_upd_key f)) (f_upd f) 57 ] 58 , bgroup "validate" [ 59 bench "validate_reply_channel_range (1000 ids)" $ 60 nf validate_reply_channel_range (f_rcr f) 61 ] 62 ]