From 9ff7c2a2a95034928a0c76ce7647d2bf3fa64520 Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Fri, 28 Dec 2018 17:35:15 +0300 Subject: [PATCH] EA-122320 - CME: LongStreamEx.reduce --- .../debugger/ui/overhead/OverheadTimings.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/overhead/OverheadTimings.java b/java/debugger/impl/src/com/intellij/debugger/ui/overhead/OverheadTimings.java index 6cc9cbc53b1d..19418caeb608 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/overhead/OverheadTimings.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/overhead/OverheadTimings.java @@ -5,7 +5,7 @@ import com.intellij.debugger.engine.DebugProcess; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.util.EventDispatcher; -import one.util.streamex.StreamEx; +import com.intellij.util.ObjectUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -23,22 +23,24 @@ public class OverheadTimings { @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") private final List> myLast10Elements = new LinkedList>() { + private long totalTime = 0; + @Override - public boolean add(Pair o) { + public synchronized boolean add(Pair o) { if (size() > 10) { - removeFirst(); + if (isExcessive()) { + myEventDispatcher.getMulticaster().excessiveOverheadDetected(); + } + Pair first = removeFirst(); + if (first != null) { + totalTime -= ObjectUtils.notNull(first.getSecond().myTime, 0L); + } } - boolean res = super.add(o); - if (isExcessive()) { - myEventDispatcher.getMulticaster().excessiveOverheadDetected(); - } - return res; + totalTime += ObjectUtils.notNull(o.getSecond().myTime, 0L); + return super.add(o); } private boolean isExcessive() { - int size = size(); - if (size < 5) return false; - long totalTime = StreamEx.of(this).map(p -> p.getSecond().myTime).nonNull().mapToLong(l -> l).sum(); long timeframe = getLast().first - getFirst().first; return totalTime > timeframe || timeframe < 5; }