我为介绍Aeron制作了一些基准测试,但我发现如果我使用不同的工具测试相同的传输,结果会略有不同。
例如,如果我使用HDR直方图,我得到的结果与维护者用他们的测试获得的数字相符:
但更重要的是,这些基准测试的结果完全不同,与我在HDR中看到的不一致:
单线程 https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-sigle-thread.txt 1个发布者线程/1个接收者线程 https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-separate-threads.txt 我很可能在某个地方搞砸了,但现在,所有三个基准测试在我看来看起来更或多或少相似,但使用不同的工具集。
非常感谢!
附言。
如果有人想自己尝试,请运行此脚本https://github.com/easy-logic/transport-benchmarks/blob/master/run-aeron.sh。要选择要运行的版本,请更改此处的
例如,如果我使用HDR直方图,我得到的结果与维护者用他们的测试获得的数字相符:
- 我的代码https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkHdrHistogram.java
- 结果https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-hdr.txt
此外,我尝试了另一个很酷的Java基准测试库 - JLBH。
但是这些结果有点让我困惑...
首先,我得到了两个不同版本的基准测试:
- 单线程 https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkJlbhSingleThread.java
- 1个发布者线程/1个接收者线程 https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/src/main/java/io/easylogic/benchmarks/AeronPingBenchmarkJlbhSeparateThread.java
但更重要的是,这些基准测试的结果完全不同,与我在HDR中看到的不一致:
单线程 https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-sigle-thread.txt 1个发布者线程/1个接收者线程 https://github.com/easy-logic/transport-benchmarks/blob/master/results/aeron-docker-jlbh-separate-threads.txt 我很可能在某个地方搞砸了,但现在,所有三个基准测试在我看来看起来更或多或少相似,但使用不同的工具集。
非常感谢!
附言。
如果有人想自己尝试,请运行此脚本https://github.com/easy-logic/transport-benchmarks/blob/master/run-aeron.sh。要选择要运行的版本,请更改此处的
mainClassName
参数:
https://github.com/easy-logic/transport-benchmarks/blob/master/aeron-ping/build.gradle#L6,共有3个选项:
- io.easylogic.benchmarks.AeronPingBenchmarkJlbhSingleThread(默认)
- io.easylogic.benchmarks.AeronPingBenchmarkJlbhSeparateThread
- io.easylogic.benchmarks.AeronPingBenchmarkHdrHistogram