首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测量Java程序性能

测量Java程序性能
EN

Stack Overflow用户
提问于 2012-03-04 05:48:09
回答 4查看 3.8K关注 0票数 2

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

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

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

有没有Java性能工具可以帮助我找出为什么新的JAR比旧的慢2倍?

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2012-03-04 20:58:49

JProfiler具有比较CPU快照的功能。记录新旧JAR文件的执行并保存快照(如果JVM在最后退出,则配置一个保存快照的"JVM exit“触发器)。

然后用"Session->Compare Snapshots in New Window“打开快照比较窗口,添加两个快照。热点比较将如下所示(在本例中设置了视图过滤器):

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2012-03-04 05:55:50

您应该使用分析器。这将向您显示哪些方法占用的时间最长(以及调用它们的是什么),而您不必猜测要测量哪些方法。

Java附带了一个名为hprof的内置分析器,但也请参阅:

票数 1
EN

Stack Overflow用户

发布于 2012-03-04 05:51:36

根据进程运行的时间长短,我会考虑Visual VM 1.3.3。如果你下载了所有的插件,你将能够看到堆、线程、对象等。这应该会有帮助,而且不会花一分钱。

我相信它假定是Oracle/Sun JVM。

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

https://stackoverflow.com/questions/9550174

复制
相关文章

相似问题

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