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 }