理解jmh中的不对称

时间:2016-10-26 09:50:27

标签: java performance jvm jmh

我正在阅读有关JMH的基准测试,现在正在考虑the example of asymmetric

他们只说了这个:

  

到目前为止,所有测试都是对称的:所有测试都执行相同的代码   线程。有时,您需要进行非对称测试。

恰好"次"我需要这样的对称基准测试。我不了解该设施的任何实际用例。他们提供以下一个:

private AtomicInteger counter;

@Setup
public void up() {
    counter = new AtomicInteger();
}

@Benchmark
@Group("g")
@GroupThreads(3)
public int inc() {
    return counter.incrementAndGet();
}

@Benchmark
@Group("g")
@GroupThreads(1)
public int get() {
    return counter.get();
}

但是你能给我一些真实世界的用例吗?我的意思是,我可能想要以不对称的方式测量什么样的东西?

1 个答案:

答案 0 :(得分:1)

程序化加密是一个特定的用例:

  

对称密钥只是意味着加密数据的密钥与将数据删除的密钥相同。非对称密钥意味着algorthm使用不同的密钥来加密和解密数据。

     

如果性能是一个有效的问题,您可以通过智能使用安全选项来帮助最大限度地降低WS-Security的性能。某些Web服务框架倾向于生成“所有上述”安全配置,消息使用WS-Security完全签名和加密,并通过SSL连接发送。如果您真的想要最大程度的保护并且不关心性能,那就没关系了,但在大多数情况下,使用任何一种SSL都更有意义(如果您只关心保护客户端和单个服务器之间传输的信息)或者WS-Security加密(如果您需要跨多个服务器发送数据,同时在通过中介时保持机密性)。

     

与使用证书的WS-Security相比,您还可以使用WS-SecureConversation在客户端和服务器(甚至是通过中介访问的服务器)之间进行长时间的消息交换,以获得相对适度但显着的性能提升。 WS-SecureConversation在交换相对较小的消息时效果特别好,与消息体的实际(对称)加密相比,证书和非对称加密的额外开销可能很大。

并发错误测试自动化是另一个用例:

  

最近提出了几种不同的方法   自动修复并发错误。这些   解决由于同步不充分导致的并发问题,包括原子性违规,死锁和数据争用。粗略地说,在所有这些情况下,修复相当于插入额外的同步以抑制错误的交错场景。

多核优化:

  

为了优化性能,JVM在代码中使用“伪内存屏障”,在跨多个处理器进行同步时充当屏蔽指令。可以恢复到“真正的”内存屏障指令,但这会对性能产生明显(和不良)的影响。

<强>参考