From b58e1774a10b795d4b96fcf1b7b4fc5f6ec3dbdd Mon Sep 17 00:00:00 2001 From: jarvis2f <137974272+jarvis2f@users.noreply.github.com> Date: Mon, 30 Dec 2024 16:49:26 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20Remove=20the?= =?UTF-8?q?=20`maxSpeed`=20and=20`minSpeed`=20properties=20to=20optimize?= =?UTF-8?q?=20the=20calculation=20of=20maximum=20and=20minimum=20speeds.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/telegram/files/AvgSpeed.java | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/api/src/main/java/telegram/files/AvgSpeed.java b/api/src/main/java/telegram/files/AvgSpeed.java index 2657b77..e3b161d 100644 --- a/api/src/main/java/telegram/files/AvgSpeed.java +++ b/api/src/main/java/telegram/files/AvgSpeed.java @@ -11,10 +11,6 @@ public class AvgSpeed { private final TreeMap speedPoints; - private long maxSpeed; - - private long minSpeed; - private final int smoothingWindowSize; /** @@ -34,8 +30,6 @@ public class AvgSpeed { public AvgSpeed(int interval, int smoothingWindowSize) { this.interval = interval; this.speedPoints = new TreeMap<>(); - this.maxSpeed = 0; - this.minSpeed = Long.MAX_VALUE; this.smoothingWindowSize = smoothingWindowSize; } @@ -54,12 +48,6 @@ public class AvgSpeed { speed = smoothSpeed(speed); } - // Update max/min speeds only for non-zero speeds - if (speed > 0) { - maxSpeed = Math.max(maxSpeed, speed); - minSpeed = Math.min(minSpeed, speed); - } - // Add new speed point speedPoints.put(timestamp, new SpeedPoint(downloadedSize, speed)); @@ -162,14 +150,21 @@ public class AvgSpeed { * Get maximum recorded speed */ public long getMaxSpeed() { - return maxSpeed; + return speedPoints.values().stream() + .map(point -> point.speed) + .max(Long::compare) + .orElse(0L); } /** * Get minimum recorded speed */ public long getMinSpeed() { - return minSpeed == Long.MAX_VALUE ? 0 : minSpeed; + return speedPoints.values().stream() + .map(point -> point.speed) + .filter(speed -> speed > 0) + .min(Long::compare) + .orElse(0L); } /**