@@ -220,6 +220,8 @@ impl Node {
220220 /// After this returns, the [`Node`] instance can be controlled via the provided API methods in
221221 /// a thread-safe manner.
222222 pub fn start ( & self ) -> Result < ( ) , Error > {
223+ let fn_start = Instant :: now ( ) ;
224+
223225 // Acquire a run lock and hold it until we're setup.
224226 let mut is_running_lock = self . is_running . write ( ) . unwrap ( ) ;
225227 if * is_running_lock {
@@ -234,14 +236,18 @@ impl Node {
234236 ) ;
235237
236238 // Start up any runtime-dependant chain sources (e.g. Electrum)
239+ let step_start = Instant :: now ( ) ;
237240 self . chain_source . start ( Arc :: clone ( & self . runtime ) ) . map_err ( |e| {
238241 log_error ! ( self . logger, "Failed to start chain syncing: {}" , e) ;
239242 e
240243 } ) ?;
244+ log_info ! ( self . logger, "TIMING: chain_source.start() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
241245
242246 // Block to ensure we update our fee rate cache once on startup
247+ let step_start = Instant :: now ( ) ;
243248 let chain_source = Arc :: clone ( & self . chain_source ) ;
244249 self . runtime . block_on ( async move { chain_source. update_fee_rate_estimates ( ) . await } ) ?;
250+ log_info ! ( self . logger, "TIMING: update_fee_rate_estimates() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
245251
246252 // Spawn background task continuously syncing onchain, lightning, and fee rate cache.
247253 let stop_sync_receiver = self . stop_sender . subscribe ( ) ;
@@ -643,6 +649,7 @@ impl Node {
643649 } ) ;
644650 }
645651
652+ log_info ! ( self . logger, "TIMING: start() TOTAL took {}ms" , fn_start. elapsed( ) . as_millis( ) ) ;
646653 log_info ! ( self . logger, "Startup complete." ) ;
647654 * is_running_lock = true ;
648655 Ok ( ( ) )
@@ -1437,6 +1444,9 @@ impl Node {
14371444 ///
14381445 /// [`EsploraSyncConfig::background_sync_config`]: crate::config::EsploraSyncConfig::background_sync_config
14391446 pub fn sync_wallets ( & self ) -> Result < ( ) , Error > {
1447+ let fn_start = Instant :: now ( ) ;
1448+ log_info ! ( self . logger, "TIMING: sync_wallets() START" ) ;
1449+
14401450 if !* self . is_running . read ( ) . unwrap ( ) {
14411451 return Err ( Error :: NotRunning ) ;
14421452 }
@@ -1446,15 +1456,28 @@ impl Node {
14461456 let sync_cman = Arc :: clone ( & self . channel_manager ) ;
14471457 let sync_cmon = Arc :: clone ( & self . chain_monitor ) ;
14481458 let sync_sweeper = Arc :: clone ( & self . output_sweeper ) ;
1459+ let logger = Arc :: clone ( & self . logger ) ;
14491460 self . runtime . block_on ( async move {
14501461 if chain_source. is_transaction_based ( ) {
1462+ let step_start = Instant :: now ( ) ;
14511463 chain_source. update_fee_rate_estimates ( ) . await ?;
1464+ log_info ! ( logger, "TIMING: sync_wallets update_fee_rate_estimates() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
1465+
1466+ let step_start = Instant :: now ( ) ;
14521467 chain_source
14531468 . sync_lightning_wallet ( sync_cman, sync_cmon, Arc :: clone ( & sync_sweeper) )
14541469 . await ?;
1470+ log_info ! ( logger, "TIMING: sync_wallets sync_lightning_wallet() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
1471+
1472+ let step_start = Instant :: now ( ) ;
14551473 chain_source. sync_onchain_wallet ( sync_wallet) . await ?;
1474+ log_info ! ( logger, "TIMING: sync_wallets sync_onchain_wallet() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
14561475 } else {
1476+ let step_start = Instant :: now ( ) ;
14571477 chain_source. update_fee_rate_estimates ( ) . await ?;
1478+ log_info ! ( logger, "TIMING: sync_wallets update_fee_rate_estimates() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
1479+
1480+ let step_start = Instant :: now ( ) ;
14581481 chain_source
14591482 . poll_and_update_listeners (
14601483 sync_wallet,
@@ -1463,8 +1486,12 @@ impl Node {
14631486 Arc :: clone ( & sync_sweeper) ,
14641487 )
14651488 . await ?;
1489+ log_info ! ( logger, "TIMING: sync_wallets poll_and_update_listeners() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
14661490 }
1491+ let step_start = Instant :: now ( ) ;
14671492 let _ = sync_sweeper. regenerate_and_broadcast_spend_if_necessary ( ) . await ;
1493+ log_info ! ( logger, "TIMING: sync_wallets regenerate_and_broadcast_spend_if_necessary() took {}ms" , step_start. elapsed( ) . as_millis( ) ) ;
1494+ log_info ! ( logger, "TIMING: sync_wallets() TOTAL took {}ms" , fn_start. elapsed( ) . as_millis( ) ) ;
14681495 Ok ( ( ) )
14691496 } )
14701497 }
0 commit comments