使用不同机器进行 Java 分析

Posted

技术标签:

【中文标题】使用不同机器进行 Java 分析【英文标题】:Java profiling with varying machines 【发布时间】:2015-03-19 15:18:16 【问题描述】:

降低 Java 程序的底层机器对任何分析测量的影响的最佳方法是什么?

每次我运行我的程序时,我都会得到不同的分析结果,主要是因为我运行我的程序的机器具有不同的整体负载。它还连接到作为 VM 的机器,并且管理程序在我每次请求时都会返回不同的 VM,但这不是重点。

重点是:

有没有一种方法来分析 Java 执行,而不管 Java 程序运行的机器的速度如何?除了普通的旧纳秒之外,是否还有其他测量方法(例如 JVM-steps through the bytecode 或类似的?)?

我知道这对于您最终会跳入的原生内容会产生问题,但可以以不同的方式处理。我只关心“我的”代码,那是纯 Java。

【问题讨论】:

【参考方案1】:

查看百分比,而不是绝对时间。看看包容性的,从不排斥的百分比。如果可以,请查看挂钟百分比,而不是 CPU 百分比。如果可能,请查看行的包含百分比,而不仅仅是方法。不要太在意“准确性”——你正在寻找具有高百分比的东西。究竟有多高是无关紧要的。

【讨论】:

实际上,我正在寻找一个非常大的项目随着时间的推移而发生的变化,基于单元测试的结果。它们应该不是函数的典型用法(当然),所以我不能仅仅依靠查看大量数字。考虑一个连续的分析来快速发现不必要的性能下降。在这种情况下,当回归测试显示性能下降时,我想查看分析结果以找出罪魁祸首。 @Alfe:我的专长更多是如何找到可能的加速。不幸的是,我不知道在不保持硬件和其他东西不变的情况下回归测试速度的方法。然而,用足够的样本来抑制不确定性,然后不时寻找其中的变化似乎是值得的。某些函数可能会相当大地改变其包含百分比,这可能是一个危险信号,需要在那里进行一些调查。

以上是关于使用不同机器进行 Java 分析的主要内容,如果未能解决你的问题,请参考以下文章

java编译器源码分析之词法分析器

无法使用跨不同机器生成的访问令牌进行身份验证

JAVA都有哪些适合进行数值计算,数据分析/机器学习的库

Java 求解不同的路径

分享:利用机器学习与传感器融合技术进行植物精准表型分析

什么提供机器人应用设计功能