如何衡量 Java 开发中的性能

Posted

技术标签:

【中文标题】如何衡量 Java 开发中的性能【英文标题】:How to measure performance in Java developement 【发布时间】:2010-01-28 09:22:03 【问题描述】:

是否有任何工具可以测量每个函数调用的执行时间并找出给定开发 java j2se 项目的瓶颈?谢谢!

【问题讨论】:

【参考方案1】:

使用分析工具,例如YourKit、JProfiler 和HPROF(这是一个命令行工具)。

【讨论】:

如何设置visualvm:sysdotoutdotprint.com/index.php/2017/08/01/turn-profiler-java【参考方案2】:

您正在寻找分析器。我知道 NetBeans 包含一个不错的 one。

你也可以看看这个问题:Open Source Java Profilers。

JDK 1.6 似乎带有一个基本的分析器。所以也许你想先试一试。它应该包含在你的 jdk6 附带的 VisualVM 中:visualvm profiler

【讨论】:

【参考方案3】:

是的,有很多工具 - 诸如 Netbeans Profiler 之类的配置文件或 eclipse 等价物。查看 this course of JavaPassion 了解更多关于分析工具和 Java 应用程序性能的信息。

还可以查看SO question 以了解开源 Java 配置文件。

【讨论】:

【参考方案4】:

考虑最精确和非侵入性的async-profiler。

IntelliJ IDEA Ultimate 具有内置分析器支持: https://www.jetbrains.com/help/idea/cpu-profiler.html

【讨论】:

【参考方案5】:

您可以尝试面向方面的编程来拦截每个方法调用并计算持续时间。

【讨论】:

【参考方案6】:

测量很好,但它是一种非常间接的发现瓶颈的方法。一个非常直接的方法是:按 ctrl-break 几次,然后检查线程堆栈。

任何瓶颈都会是一行代码,几乎总是一个函数调用,并且它经常出现在某个线程的堆栈上。情况越糟糕,出现的频率就越多。

只需查找任何此类经常出现的代码行。如果您能弄清楚如何减少或根本不调用它,您将节省大量时间,保证。 Here's why.

【讨论】:

【参考方案7】:

Java JDK 在 bin 文件夹下带有 JVisualVM,一旦您的应用程序服务器(例如正在运行),您可以运行 visualvm 并将其连接到您的本地主机,这将为您提供内存分配并让您能够执行堆转储

有关如何启用的更详细步骤:http://sysdotoutdotprint.com/index.php/2017/08/01/turn-profiler-java/

【讨论】:

以上是关于如何衡量 Java 开发中的性能的主要内容,如果未能解决你的问题,请参考以下文章

如何衡量布局性能?

必看衡量web性能的几个指标

如何模拟硬件来衡量 .net 应用程序的性能?

使用多个分类器时 - 如何衡量集成的性能? [SciKit 学习]

如何衡量 Tensorflow 新 DataSet API 中 Map 函数的性能?

RK3399平台开发系列讲解(内核入门篇)1.44怎么才能衡量磁盘的 I/O 性能?