From db743bc4171ffbe623d217eb15bbd200a6cea10b Mon Sep 17 00:00:00 2001 From: Anders Olsson Date: Tue, 31 Oct 2023 10:02:07 +0100 Subject: [PATCH] Improve performance --- src/history.rs | 23 +++++++---------------- src/message.rs | 3 +++ 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/history.rs b/src/history.rs index 4a09dc4..a5c23bf 100644 --- a/src/history.rs +++ b/src/history.rs @@ -269,27 +269,18 @@ impl History { agent::clean(self.agents.values_mut(), true); - let mut unique = Vec::with_capacity(100); + let mut this_agent = Vec::with_capacity(1024); - let this_agent = composition - .iter() - .flatten() - .flatten() - .filter(|idx| { - if !unique.contains(idx) { - unique.push(*idx); + for agent in composition.iter().flatten().flatten() { + if this_agent.contains(agent) { + continue; + } - return true; - } + this_agent.push(*agent); - false - }) - .collect::>(); - - for agent in &this_agent { if !self.agents.contains_key(agent) { self.agents.insert( - **agent, + *agent, Agent { player: priors.remove(agent).unwrap_or_else(|| { Player::new( diff --git a/src/message.rs b/src/message.rs index a340385..a73fb96 100644 --- a/src/message.rs +++ b/src/message.rs @@ -15,14 +15,17 @@ impl TeamMessage { } */ + #[inline] pub(crate) fn posterior_win(&self) -> Gaussian { self.prior * self.likelihood_lose * self.likelihood_draw } + #[inline] pub(crate) fn posterior_lose(&self) -> Gaussian { self.prior * self.likelihood_win * self.likelihood_draw } + #[inline] pub(crate) fn likelihood(&self) -> Gaussian { self.likelihood_win * self.likelihood_lose * self.likelihood_draw }