Java 理解jmh中的不对称
我正在阅读JMH的基准测试,现在正在考虑 他们只是说: 到目前为止,所有测试都是对称的:在所有测试中都执行相同的代码 线。有时,您需要不对称测试 我需要这种对称的基准测试。我不了解该设施的任何实际使用案例。它们提供了以下内容:Java 理解jmh中的不对称,java,performance,jvm,jmh,Java,Performance,Jvm,Jmh,我正在阅读JMH的基准测试,现在正在考虑 他们只是说: 到目前为止,所有测试都是对称的:在所有测试中都执行相同的代码 线。有时,您需要不对称测试 我需要这种对称的基准测试。我不了解该设施的任何实际使用案例。它们提供了以下内容: private AtomicInteger counter; @Setup public void up() { counter = new AtomicInteger(); } @Benchmark @Group("g") @GroupThreads(3)
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();
}
但是你能给我一些真实世界的用例吗?我的意思是,我想不对称地衡量哪些方面?编程加密是一个特定的用例: 对称密钥仅仅意味着加密数据的密钥与解密数据的密钥相同。非对称密钥意味着算法使用不同的密钥加密和解密数据 在性能是一个值得关注的问题的情况下,通过智能地使用安全选项,您可以帮助最小化WS-Security对性能的影响。某些web服务框架倾向于生成“上述所有”安全配置,使用WS-security对消息进行完全签名和加密,并通过SSL连接发送消息。如果您确实想要最大程度的保护,而不关心性能,那么这很好,但在大多数情况下,使用SSL(如果您只关心保护客户端和单个服务器之间传输的信息)或WS-Security加密更有意义(如果您需要跨多台服务器传送数据,同时在通过中介时保持机密性) 您还可以使用WS-SecureConversation在客户端和服务器之间进行长时间运行的消息交换(即使是通过中介访问的),与使用证书的WS-Security相比,获得了相对适中但显著的性能提升。WS-SecureConversation在交换相对较小的消息时尤其有效,与消息体的实际(对称)加密相比,证书和非对称加密的额外开销可能会更大 并发bug测试自动化是另一个用例: 最近提出了几种不同的方法 自动修复并发错误 解决因同步不足而导致的并发问题,包括原子性冲突、死锁和数据竞争。大体上说,在所有这些情况下,修复相当于插入额外的同步以抑制糟糕的交错场景 和多核优化: 为了优化性能,JVM在代码中使用“伪内存屏障”在跨多个处理器进行同步时充当围栏指令。可以恢复为“真实”内存屏障指令,但这可能会对性能产生明显(且不好)影响 参考资料