Hazelcast似乎没有完全关闭。至少这就是我的绩效分析所说的。如果我执行以下代码(hazelcast实例与同一网络中不同vm上的另一个节点正好形成一个集群),则比不创建hazelcast实例而执行代码的速度总是慢10-20%。真正让我感到奇怪的是,尽管事先关闭了hazelcast实例,但性能仍然下降。
HazelcastInstance hi = Hazelcast.newHazelcastInstance()
hi.shutdown
... code goes here ...
答案 0 :(得分:1)
应该没有这种区别。
您是否从测量中排除了Hazelcast实例的创建和处置(关闭)?
在两种情况下,遵循JMH Microbenchmark都会给我类似的数字-创建和销毁Hazelcast时以及完全省略时:
@State(Scope.Benchmark)
public static class ExecutionPlan {
@Setup(Level.Trial)
public void setUp() {
Hazelcast.newHazelcastInstance().shutdown();
}
}
@Benchmark
public static void test(ExecutionPlan plan, Blackhole bh) throws Exception {
long[] numbers = new long[2<<20];
for (int i=0; i<numbers.length; i++) {
numbers[i] = i;
}
for (int i=0; i<numbers.length; i++) {
byte[] bytes = Long.toString(numbers[i]).getBytes("UTF-8");
bh.consume(MessageDigest.getInstance("SHA-1").digest(bytes));
}
}
如果仍然遇到性能下降的情况,请共享可重现该问题的代码。