小编QIv*_*van的帖子

无用的测试指令?

我得到了下面的汇编列表作为我的java程序的JIT编译的结果.

mov    0x14(%rsp),%r10d
inc    %r10d              

mov    0x1c(%rsp),%r8d
inc    %r8d               

test   %eax,(%r11)         ; <--- this instruction

mov    (%rsp),%r9
mov    0x40(%rsp),%r14d
mov    0x18(%rsp),%r11d
mov    %ebp,%r13d
mov    0x8(%rsp),%rbx
mov    0x20(%rsp),%rbp
mov    0x10(%rsp),%ecx
mov    0x28(%rsp),%rax    

movzbl 0x18(%r9),%edi     
movslq %r8d,%rsi          

cmp    0x30(%rsp),%rsi
jge    0x00007fd3d27c4f17 
Run Code Online (Sandbox Code Playgroud)

我对这test条指令的理解在这里没用,因为测试的主要思想是

标志SF,ZF,PF被修改,而AND的结果被丢弃.

这里我们不使用这些结果标志.

这是JIT中的错误还是我错过了什么?如果是,报告的最佳位置在哪里?谢谢!

java assembly jit jvm jvm-hotspot

33
推荐指数
1
解决办法
1194
查看次数

运输基准的不同结果

我为我关于 Aeron 的演示做了一些基准测试,但我发现如果我对相同的传输使用不同的工具,我得到的结果会略有不同。

例如,如果我使用HDR 直方图,我得到的结果与维护者在测试中得到的数字一致:

另外,我尝试了另一个很酷的 Java 基准库 - JLBH

但结果让我有点困惑......

首先,我得到了 2 个不同版本的基准测试:

似乎 JLBH 鼓励为侦听器使用另一个线程,至少这样一些设置(例如吞吐量)更有意义,并且初始预热会打印一些统计信息。但我可能是非常错误的,如果我是,请纠正我。

但更重要的是,这些基准测试的结果完全不同,与我在 HDR 上看到的结果不一致:

我很有可能在某个地方搞砸了,但就目前而言,所有 3 个基准测试看起来或多或少都与我相似,但使用不同的工具集。

非常感谢!

聚苯乙烯

如果有人想自己尝试这个,你必须运行这个脚本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

java performance benchmarking multithreading aeron

5
推荐指数
1
解决办法
371
查看次数