我阅读了有关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不是这样的解决方案,您应该在别处查找。