diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/DelayMeter.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/DelayMeter.java index 9a43af1ef78b..066ab9ee4803 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/DelayMeter.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/DelayMeter.java @@ -15,27 +15,30 @@ */ package com.intellij.openapi.editor.impl; +import gnu.trove.TLongArrayList; + /** * @author Pavel Fatin */ class DelayMeter { - private boolean myIsStarted; - - private long myStart; + private final TLongArrayList myStartTimes = new TLongArrayList(); private SummaryStatistics myStats = new SummaryStatistics(); void registerStart() { - myIsStarted = true; - myStart = System.nanoTime(); + myStartTimes.add(System.nanoTime()); } void registerFinish() { - if (myIsStarted) { - long elapsed = System.nanoTime() - myStart; - myStats.accept(elapsed); + if (!myStartTimes.isEmpty()) { + long now = System.nanoTime(); - myIsStarted = false; + for (int i = 0; i < myStartTimes.size(); i++) { + long elapsed = now - myStartTimes.get(i); + myStats.accept(elapsed); + } + + myStartTimes.clear(); } }