]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Force inlining source and target node id lookup in candidate hops 2023-12-layout-graph-mem
authorMatt Corallo <git@bluematt.me>
Sat, 9 Dec 2023 21:12:30 +0000 (21:12 +0000)
committerMatt Corallo <git@bluematt.me>
Wed, 17 Jul 2024 14:36:57 +0000 (14:36 +0000)
Because our router is rather large, LLVM doesn't always decide to
inline small functions in it, opting instead for a call. This is
somewhat wasteful when we do repeated `match`es on the same data,
so here we force inlining of the `source` and `target` `NodeId`
lookups.

lightning/src/routing/router.rs

index c03fbfaf614aad94801cfd15c036cc7cc5d45775..590a99daa10230b3bbadce23992d20165826fea5 100644 (file)
@@ -1532,7 +1532,7 @@ impl<'a> CandidateRouteHop<'a> {
        /// Source node id refers to the node forwarding the HTLC through this hop.
        ///
        /// For [`Self::FirstHop`] we return payer's node id.
-       #[inline]
+       #[inline(always)]
        pub fn source(&self) -> NodeId {
                match self {
                        CandidateRouteHop::FirstHop(hop) => *hop.payer_node_id,
@@ -1551,7 +1551,7 @@ impl<'a> CandidateRouteHop<'a> {
        ///
        /// For [`Self::OneHopBlinded`] we return `None` because the target is the same as the source,
        /// and such a return value would be somewhat nonsensical.
-       #[inline]
+       #[inline(always)]
        pub fn target(&self) -> Option<NodeId> {
                match self {
                        CandidateRouteHop::FirstHop(hop) => Some(hop.details.counterparty.node_id.into()),