From 92d1031daff0b1faad895ea702256b85960dcd63 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 24 Nov 2022 21:52:39 +0100 Subject: [PATCH] reduce number of allocations VecDeque::new always allocates 7 elements --- crates/turbo-tasks-memory/src/task.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/turbo-tasks-memory/src/task.rs b/crates/turbo-tasks-memory/src/task.rs index eec66bb36a62c..c3e4fdd246226 100644 --- a/crates/turbo-tasks-memory/src/task.rs +++ b/crates/turbo-tasks-memory/src/task.rs @@ -762,7 +762,7 @@ impl Task { backend: &MemoryBackend, turbo_tasks: &dyn TurboTasksBackendApi, ) { - let mut queue = VecDeque::new(); + let mut queue = VecDeque::with_capacity(0); self.add_to_scope_internal_shallow( id, is_optimization_scope, @@ -913,7 +913,7 @@ impl Task { backend: &MemoryBackend, turbo_tasks: &dyn TurboTasksBackendApi, ) { - let mut queue = VecDeque::new(); + let mut queue = VecDeque::with_capacity(0); self.remove_from_scope_internal_shallow(id, backend, turbo_tasks, &mut queue); run_remove_from_scope_queue(queue, id, backend, turbo_tasks); } @@ -1523,8 +1523,8 @@ pub fn run_add_to_scope_queue( &mut queue, ); }); - if queue.len() > SPLIT_OFF_QUEUE_AT { - let split_off_queue = queue.split_off(SPLIT_OFF_QUEUE_AT); + while queue.len() > SPLIT_OFF_QUEUE_AT { + let split_off_queue = queue.split_off(queue.len() - SPLIT_OFF_QUEUE_AT); turbo_tasks.schedule_backend_foreground_job(backend.create_backend_job( Job::AddToScopeQueue(split_off_queue, id, is_optimization_scope), )); @@ -1543,8 +1543,8 @@ pub fn run_remove_from_scope_queue( backend.with_task(child, |child| { child.remove_from_scope_internal_shallow(id, backend, turbo_tasks, &mut queue); }); - if queue.len() > SPLIT_OFF_QUEUE_AT { - let split_off_queue = queue.split_off(SPLIT_OFF_QUEUE_AT); + while queue.len() > SPLIT_OFF_QUEUE_AT { + let split_off_queue = queue.split_off(queue.len() - SPLIT_OFF_QUEUE_AT); turbo_tasks.schedule_backend_foreground_job( backend.create_backend_job(Job::RemoveFromScopeQueue(split_off_queue, id)),