java - 衡量 Java 程序性能

标签 java profiling performance-testing

我有一个旧的应用程序,一个 JAR 文件,它经过了一些增强。基本上要修改部分代码,同时修改部分逻辑。

将旧版本与新版本进行比较,新版本比旧版本慢约 2 倍。

我正在尝试缩小导致速度变慢的原因,但我发现自己正在使用 System.println 和 System.currentTimeMillis() 来测量某些 for 循环的时间。这真的变得非常乏味。

有没有一种 Java 性能工具可以帮助我弄清楚为什么新 JAR 比旧 JAR 慢大约 2 倍?

提前致谢。

最佳答案

JProfiler具有比较CPU快照的能力。记录新旧JAR文件的执行情况并保存快照(如果最后JVM退出,请配置“JVM退出”触发器来保存快照)。

然后通过“ session ->在新窗口中比较快照”打开快照比较窗口并添加两个快照。热点比较将如下所示(在本例中设置了 View 过滤器):

enter image description here

它将立即向您显示哪些方法导致执行时间增加。

分析执行时间差异的另一种方法是调用树比较,如下所示:

enter image description here

免责声明:我的公司开发 JProfiler。

关于java - 衡量 Java 程序性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9550174/

相关文章:

python - Python 服务器的实时分析

ruby - 将 rspec 与 capybara-webkit 或 selenium 一起使用来测量页面加载时间

clojure - 请帮助我理解这些 Clojure Hprof 痕迹

java - 计算逆波兰表示法中算术表达式的值

java - 如何从左到右跟踪和移动字符串?

java - 使用多线程实现java gui登录

java - 使用 JVMTI 获取 GC 释放的内存量

c# - 为什么动态转换比对象转换更快

wpf - "Measure"的性能问题

java - 来自类外部的 jar 文件的 Autowiring 类