Java Netbeans:性能监视和分析

Java Netbeans:性能监视和分析,java,netbeans,profiling,profiler,Java,Netbeans,Profiling,Profiler,我有一个Java应用程序,它有6个循环。这些循环会进行大量计算,结果非常缓慢。有时候,它似乎永远不会结束,直到你100岁 我运行了Netbeans“profiler”来查看哪个循环需要更多的时间。不幸的是,我无法做到这一点,因为所有的循环都在一个方法中,并且分析器没有逐个循环地指出性能 我真的需要监控性能,以便能够单独解决每个循环的性能问题。但是如何使用Netbeans“探查器”实现这一点呢 是否有其他方法可以提供帮助?对于简单的分析,请放置以下输出: for (/*for condition

我有一个Java应用程序,它有6个循环
。这些循环会进行大量计算,结果非常缓慢。有时候,它似乎永远不会结束,直到你100岁

我运行了Netbeans“profiler”来查看哪个循环需要更多的时间。不幸的是,我无法做到这一点,因为所有的循环都在一个方法中,并且分析器没有逐个循环地指出性能

我真的需要监控性能,以便能够单独解决每个循环的性能问题。但是如何使用Netbeans“探查器”实现这一点呢


是否有其他方法可以提供帮助?

对于简单的分析,请放置以下输出:

for (/*for condition here*/) {
    final long startTime = System.currentTimeMillis();

    // your "massive computation" here


    final long duration = System.currentTimeMillis() - startTime;
    System.out.printf("%.2f sec\n", duration / 1000);
}

但是,如前所述,重新组织代码(可能使用并发性)可能是您现在真正的任务。

将您的方法拆分为较小的方法,然后在这些方法上使用分析工具…

“*因为所有循环都在一个方法中*”=>创建方法!此外,听起来你真正的问题不在于你在循环中做了什么,而在于你算法的复杂性——如果这是6个嵌套循环,那就是你需要解决的问题…@assylias:谁说我有6个嵌套循环。没人-“听起来像”=>这只是一个猜测。我的第一条评论仍然适用。@assylias:现在我们正在尝试GPU编程。但是在Windows7中,
rootbeer
是有缺陷的。我们无法降低复杂性,我们已经做到了最大程度。试试看。它将准确地显示时间花在哪里,至少在Java代码中是这样。这是可行的,但对于这类事情,通常需要更复杂的平均/最坏情况/etc计时。换句话说,计算你通过循环的次数,所有这些所花费的总时间和单个最长的时间。是的!我在上面发布的方法仅用于一级分析。再进一步,更重要的分析必须基于专业的分析。是的,这是最好的方法:)