我正在阅读有关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();
}
但是你能给我一些真实世界的用例吗?我的意思是,我可能想要以不对称的方式测量什么样的东西?
答案 0 :(得分:1)
程序化加密是一个特定的用例:
对称密钥只是意味着加密数据的密钥与将数据删除的密钥相同。非对称密钥意味着algorthm使用不同的密钥来加密和解密数据。
如果性能是一个有效的问题,您可以通过智能使用安全选项来帮助最大限度地降低WS-Security的性能。某些Web服务框架倾向于生成“所有上述”安全配置,消息使用WS-Security完全签名和加密,并通过SSL连接发送。如果您真的想要最大程度的保护并且不关心性能,那就没关系了,但在大多数情况下,使用任何一种SSL都更有意义(如果您只关心保护客户端和单个服务器之间传输的信息)或者WS-Security加密(如果您需要跨多个服务器发送数据,同时在通过中介时保持机密性)。
与使用证书的WS-Security相比,您还可以使用WS-SecureConversation在客户端和服务器(甚至是通过中介访问的服务器)之间进行长时间的消息交换,以获得相对适度但显着的性能提升。 WS-SecureConversation在交换相对较小的消息时效果特别好,与消息体的实际(对称)加密相比,证书和非对称加密的额外开销可能很大。
并发错误测试自动化是另一个用例:
最近提出了几种不同的方法 自动修复并发错误。这些 解决由于同步不充分导致的并发问题,包括原子性违规,死锁和数据争用。粗略地说,在所有这些情况下,修复相当于插入额外的同步以抑制错误的交错场景。
多核优化:
为了优化性能,JVM在代码中使用“伪内存屏障”,在跨多个处理器进行同步时充当屏蔽指令。可以恢复到“真正的”内存屏障指令,但这会对性能产生明显(和不良)的影响。
<强>参考强>