相关疑难解决方法(0)

为什么方法断点会对性能产生负面影响?

为什么添加方法级断点会对调试模式下的程序性能产生负面影响?

采取以下(有点人为)的例子:

public static void main(String[] args) {
    long start = System.currentTimeMillis();
    for(int a = 0; a <Integer.MAX_VALUE; a++) {
        long v = a * a;
        if(v == 100) {
            doSomething();
        }
    }
    System.out.println("Time: " + (System.currentTimeMillis() - start) + " ms");
}

private static void doSomething() {          //*** BREAKPOINT 2
    System.out.println("done something");    //*** BREAKPOINT 1
}
Run Code Online (Sandbox Code Playgroud)

这个表现约为:

  • 不在调试中:4.5秒
  • 调试,断点1:6.0秒
  • 调试,断点2: 47.0秒

这是怎么回事?方法级别调试给我们带来的好处是普通方法不能做什么?

谢谢!

编辑

时间只是近似值,包括我对断点做出反应并继续应用程序所需的时间(看起来大约是1秒钟).

我很欣赏System.currentTimeMillis()不是100%准确,但结果在多次测试中是一致的,并且性能差异很大!事实上,添加方法级别断点会导致IntelliJ发出警告,它会对性能产生影响.

java debugging jvm

8
推荐指数
1
解决办法
1503
查看次数

标签 统计

debugging ×1

java ×1

jvm ×1