From 4e0182ff330ab1847b971df75f347e8e6abd3bf7 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 8 Nov 2018 14:26:37 +0100 Subject: [PATCH] make it easier to turn debug mode in testTypingLatencyPerformance --- .../impl/DaemonRespondToChangesTest.java | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/impl/DaemonRespondToChangesTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/impl/DaemonRespondToChangesTest.java index 5e28e613daaf..36b3a5f9b794 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/impl/DaemonRespondToChangesTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/impl/DaemonRespondToChangesTest.java @@ -98,6 +98,7 @@ import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.intellij.ui.HintListener; import com.intellij.ui.LightweightHint; import com.intellij.util.*; +import com.intellij.util.concurrency.AppExecutorUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.io.storage.HeavyProcessLatch; import com.intellij.util.ref.GCUtil; @@ -117,6 +118,7 @@ import java.io.IOException; import java.lang.reflect.Method; import java.util.List; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; @@ -1670,18 +1672,21 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase { } public void testTypingLatencyPerformance() throws Throwable { + boolean debug = false; + @NonNls String filePath = "/psi/resolve/ThinletBig.java"; configureByFile(filePath); type(' '); CompletionContributor.forLanguage(getFile().getLanguage()); - //long s = System.currentTimeMillis(); + long s = System.currentTimeMillis(); highlightErrors(); - //long e = System.currentTimeMillis(); - //System.out.println("Hi elapsed: "+(e-s)); + if (debug) { + System.out.println("Hi elapsed: "+(System.currentTimeMillis() - s)); + } - //List dumps = new ArrayList<>(); + List dumps = new ArrayList<>(); final DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(getProject()); int N = Math.max(5, Timings.adjustAccordingToMySpeed(80, false)); @@ -1698,17 +1703,17 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase { return; } // uncomment to debug what's causing pauses - /* AtomicBoolean finished = new AtomicBoolean(); - AppExecutorUtil.getAppScheduledExecutorService().schedule(() -> { - if (!finished.get()) { - dumps.add(ThreadDumper.dumpThreadsToString()); - } - }, 10, TimeUnit.MILLISECONDS); - */ + if (debug) { + AppExecutorUtil.getAppScheduledExecutorService().schedule(() -> { + if (!finished.get()) { + dumps.add(ThreadDumper.dumpThreadsToString()); + } + }, 10, TimeUnit.MILLISECONDS); + } type(' '); long end = System.currentTimeMillis(); - //finished.set(true); + finished.set(true); long interruptTime = end - now; interruptTimes[finalI] = interruptTime; assertTrue(codeAnalyzer.getUpdateProgress().isCanceled()); @@ -1734,11 +1739,11 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase { System.out.println("Interrupt times: " + Arrays.toString(interruptTimes)); - /* - for (String dump : dumps) { - System.out.println("\n\n-----------------------------\n\n" + dump); + if (debug) { + for (String dump : dumps) { + System.out.println("\n\n-----------------------------\n\n" + dump); + } } - */ long mean = ArrayUtil.averageAmongMedians(interruptTimes, 3); long avg = Arrays.stream(interruptTimes).sum() / interruptTimes.length;