如何衡量 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 开发中的性能的主要内容,如果未能解决你的问题,请参考以下文章
使用多个分类器时 - 如何衡量集成的性能? [SciKit 学习]