From 0c310bab9e4df023acc0fe006d1e25ee07687c87 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Mon, 21 Jun 2021 12:38:07 +0200 Subject: Refactor: Calculate number of dependency for allocating HashMaps After this refactoring, the number of dependencies is calculated _before_ the hashmaps for the artifacts/errors are allocated, so that we allocate approximately the right amount of memory. Signed-off-by: Matthias Beyer --- src/orchestrator/orchestrator.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/orchestrator/orchestrator.rs') diff --git a/src/orchestrator/orchestrator.rs b/src/orchestrator/orchestrator.rs index 0e548e3..fc15494 100644 --- a/src/orchestrator/orchestrator.rs +++ b/src/orchestrator/orchestrator.rs @@ -559,12 +559,13 @@ impl<'a> JobTask<'a> { self.jobdef.dependencies.iter().map(|u| u.to_string()).collect::>() }); + let dep_len = self.jobdef.dependencies.len(); // A list of job run results from dependencies that were received from the tasks for the // dependencies - let mut received_dependencies: HashMap> = HashMap::new(); + let mut received_dependencies: HashMap> = HashMap::with_capacity(dep_len); // A list of errors that were received from the tasks for the dependencies - let mut received_errors: HashMap = HashMap::with_capacity(self.jobdef.dependencies.len()); + let mut received_errors: HashMap = HashMap::with_capacity(dep_len); // Helper function to check whether all UUIDs are in a list of UUIDs let all_dependencies_are_in = |dependency_uuids: &[Uuid], list: &HashMap>| { @@ -582,7 +583,7 @@ impl<'a> JobTask<'a> { self.jobdef.job.package().name(), self.jobdef.job.package().version(), received_dependencies.iter().filter(|(rd_uuid, _)| self.jobdef.dependencies.contains(rd_uuid)).count(), - self.jobdef.dependencies.len()) + dep_len) }); trace!("[{}]: Updated bar", self.jobdef.job.uuid()); -- cgit v1.2.3