为什么Hazelcast不在运行时会拖动性能?

时间:2019-06-15 03:44:48

标签: java performance distributed-computing hazelcast

Hazelcast似乎没有完全关闭。至少这就是我的绩效分析所说的。如果我执行以下代码(hazelcast实例与同一网络中不同vm上的另一个节点正好形成一个集群),则比不创建hazelcast实例而执行代码的速度总是慢10-20%。真正让我感到奇怪的是,尽管事先关闭了hazelcast实例,但性能仍然下降。

HazelcastInstance hi = Hazelcast.newHazelcastInstance()
hi.shutdown
... code goes here ...

1 个答案:

答案 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));
    }
}

如果仍然遇到性能下降的情况,请共享可重现该问题的代码。