From 5b54aed1c0a19f4bc21f9232e2f42e55c1875ee4 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 24 Feb 2021 08:38:29 -0800 Subject: [PATCH] Speed up getLeaderSchedule --- core/src/rpc.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/src/rpc.rs b/core/src/rpc.rs index 1a47dd0e35..52b66a563d 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -2405,15 +2405,23 @@ impl RpcSol for RpcSolImpl { Ok( solana_ledger::leader_schedule_utils::leader_schedule(epoch, &bank).map( |leader_schedule| { - let mut map = HashMap::new(); + let mut leader_schedule_by_identity = HashMap::new(); - for (slot_index, pubkey) in + for (slot_index, identity_pubkey) in leader_schedule.get_slot_leaders().iter().enumerate() { - let pubkey = pubkey.to_string(); - map.entry(pubkey).or_insert_with(Vec::new).push(slot_index); + leader_schedule_by_identity + .entry(identity_pubkey) + .or_insert_with(Vec::new) + .push(slot_index); } - map + + leader_schedule_by_identity + .into_iter() + .map(|(identity_pubkey, slot_indices)| { + (identity_pubkey.to_string(), slot_indices) + }) + .collect() }, ), )