Path 1: 11 calls (0.65)

0 (8) 1 (3)

1 (7) 16 (3) 7 (1)

1def advance(self, task_id: TaskID, advance: float = 1) -> None:
2        """Advance task by a number of steps.
3
4        Args:
5            task_id (TaskID): ID of task.
6            advance (float): Number of steps to advance. Default is 1.
7        """
8        current_time = self.get_time()
9        with self._lock:
10            task = self._tasks[task_id]
11            completed_start = task.completed
12            task.completed += advance
13            update_completed = task.completed - completed_start
14            old_sample_time = current_time - self.speed_estimate_period
15            _progress = task._progress
16
17            popleft = _progress.popleft
18            while _progress and _progress[0].timestamp < old_sample_time:
19                popleft()
20            while len(_progress) > 1000:
21                popleft()
22            _progress.append(ProgressSample(current_time, update_completed))
23            if (
24                task.total is not None
25                and task.completed >= task.total
26                and task.finished_time is None
27            ):
28                task.finished_time = task.elapsed
29                task.finished_speed = task.speed
            

Path 2: 6 calls (0.35)

0 (6)

13 (4) 1 (2)

1def advance(self, task_id: TaskID, advance: float = 1) -> None:
2        """Advance task by a number of steps.
3
4        Args:
5            task_id (TaskID): ID of task.
6            advance (float): Number of steps to advance. Default is 1.
7        """
8        current_time = self.get_time()
9        with self._lock:
10            task = self._tasks[task_id]
11            completed_start = task.completed
12            task.completed += advance
13            update_completed = task.completed - completed_start
14            old_sample_time = current_time - self.speed_estimate_period
15            _progress = task._progress
16
17            popleft = _progress.popleft
18            while _progress and _progress[0].timestamp < old_sample_time:
19                popleft()
20            while len(_progress) > 1000:
21                popleft()
22            _progress.append(ProgressSample(current_time, update_completed))
23            if (
24                task.total is not None
25                and task.completed >= task.total
26                and task.finished_time is None
27            ):
28                task.finished_time = task.elapsed
29                task.finished_speed = task.speed