当前位置: 首页 > 知识库问答 >
问题:

JMH基准测试中嵌套方法概述

乐健
2023-03-14

我还没能找到任何真正能回答我问题的答案,所以就这样吧。

我编写了一个Java库,我希望使用一个独立的Java项目来执行基准测试,该项目将JMH作为依赖项。我能够编写一个执行基准测试的基准测试方法,但是这还不够详细,不能满足我的需要。我想知道图书馆的哪些方法占用的时间最多。通过这种方式,我更好地了解了可能的瓶颈,以及从哪里开始优化我的库。

这意味着我希望有一个详细的树报告,其中显示了底层方法调用以及执行它们需要多长时间,而不仅仅是能够查看总的基准方法执行时间。

JMH能做到这一点吗?

共有1个答案

益英逸
2023-03-14

正如尤金所说,我在找一个剖析器。Java Flight Recorder(JFR)是一个用于收集运行中Java应用程序的诊断和分析数据的工具,我能够使用它来深入了解我的应用程序的性能。

 类似资料:
  • 我使用 jmh(http://openjdk.java.net/projects/code 工具/jmh/ ) 来基准测试一些方法。此外,我有一组参数,我想用它们作为参数来运行此方法。是否可以为每个特定参数值生成一个方法(带有@GenerateMicroBenchmark注释)? 现在我使用类似的实现,但不太方便,因为我必须手动编写很多统一的代码:

  • 我正在使用向服务器发送REST请求的自定义Java库为HTTP服务器编写性能测试。在开始时,我正在执行数据准备阶段,以便获得一个要向服务器发送请求的对象列表。 现在,问题是,我可以使用注释测试可以注入基准函数的参数列表: 问题是,我希望通过Java参数列表实现同样的效果,并避免对它们进行迭代。你能告诉我怎么做吗?

  • 我使用JMH对DOM解析器进行基准测试。我得到了非常奇怪的结果,因为第一次迭代实际上比后面的迭代运行得更快 有人能解释为什么会这样吗?此外,百分位数和所有数字意味着什么?为什么在第三次迭代后它开始变得稳定?一次迭代是否意味着整个基准测试方法的一次迭代?下面是我正在运行的方法

  • 在我的场景中,基准测试中的方法应该在一个线程中按顺序运行并按顺序修改状态。 例如,有一个

  • 受另一个关于堆栈溢出的问题的启发,我编写了一个微型基准来检查,什么更有效: 有条件地检查零除数或 捕获和处理 下面是我的代码: 我对JMH完全陌生,不确定代码是否正确。 我的基准是正确的吗?你看到任何错误吗? 旁白:请不要建议询问https://codereview.stackexchange.com.对于Codereview,代码必须已按预期工作。我不确定这个基准是否能按预期工作。

  • 我的最终目标是使用标准Java集合作为基准,为几个Java基本集合库创建一套全面的基准。在过去,我曾使用循环方法编写这类微基准测试。我将我正在进行基准测试的函数放在一个循环中,并迭代100万次,这样jit就有机会预热。我取循环的总时间,然后除以迭代次数,得到一个对我正在进行基准测试的函数的单个调用所需时间的估计值。在最近阅读了JMH项目,特别是这个例子:JMHSample_11_循环之后,我看到了