我阅读了有关JMH的内容,并尝试了提供的示例。

我想做的是衡量以下情况的统计数据,


  [1]客户订单-> [2]服务器-> [3]开始处理订单->
  [4]成功处理了订单并准备发送-> [5]客户端
  收到回应


我可以成功完成[1]到[5]的场景。在那里,我使用Benchmark.jar从@Benchmark注释方法调用我的客户端

现在,我只能测量从[2]到[4]的统计数据,它们代表服务器端的处理。我应该通过注释服务器端方法来做到这一点吗?如果是这样,我该如何以获取基准统计信息的方式调用这些方法?

文档说The recommended way to run a JMH benchmark is to use Maven to setup a standalone project that depends on the jar files of your application.这是否表示我正在尝试的场景无法使用JMH?

更新:
有没有一种方法可以通过rmi调用来调用@Benchmark带注释的方法?

最佳答案

@Benchmark Javadoc说:

 * <p>{@link Benchmark} demarcates the benchmark payload, and JMH treats it specifically
 * as the wrapper which contains the benchmark code. In order to run the benchmark reliably,
 * JMH enforces a few stringent properties for these wrapper methods, including, but not
 * limited to:</p>


@Benchmark是划定JMH应视为基准的代码段的注释。它不是魔术注释,它可以测量程序中其他位置的任何给定方法。而且,您不应该自己调用@Benchmark方法。

您想要的不是基准测试,而是跟踪/监视/性能分析解决方案,它可以检测和说明请求经过的所有阶段。 JMH不是这样的解决方案,您应该在别处查找。

09-11 21:42