首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么条件调试如此缓慢?

为什么条件调试如此缓慢?
EN

Stack Overflow用户
提问于 2014-07-10 02:18:08
回答 1查看 4.6K关注 0票数 33

我注意到,当我使用条件断点进行调试时,执行速度会显著减慢。我知道这一点已经有一段时间了,现在想知道为什么。到底是什么原因导致执行如此缓慢?我知道正在添加条件,但是如果我自己添加条件,我不会减慢执行速度。

例如,假设我们有以下代码。假设我们添加了一个条件断点a=i。让我们将条件设置为i==10000。

public class Main {

    public static void main(String[] args) {
        int a = 0;

        for (int i = 0; i<100000; i++) {
                a = i;  //put breakpoint here (if i == 10000)
        }
        System.out.println("Done! a=" + a);
    }
}

现在,让我们自己编写条件。

public class Main {

    public static void main(String[] args) {
        int a = 0;

        for (int i = 0; i<100000; i++) {
            if (i == 10000)
                a = i; //put a NON-conditional breakpoint here
            else a = i;
        }
        System.out.println("Done! a=" + a);
    }
}

为什么这两者的运行时间有如此显著的不同?为什么第一个要慢得多?

如果你想知道,我在Linux (Ubuntu)上使用Oracle-JDK-8。我用Eclipse和IntelliJ得到了同样的结果。

实验结果

我在多个IDE上运行了第一个案例,以查看是否存在差异。以下是结果

IntelliJ:

~9秒即命中断点

~90秒完成命中(包括最初的9秒)

Eclipse:

~9秒即命中断点

~90秒完成命中(包括最初的9秒)

Netbeans:

~ 12秒即命中断点

~ 190秒完成命中(包括最初的12秒)

所以IntelliJ和Eclipse差不多,但是Netbeans要慢得多。

第二个示例几乎同时在所有IDE上运行,所以我没有做实验。(但我确实运行了所有三个,以查看是否有延迟,没有一个。)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24661062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档