java如何提高从hazelcast读取数据的Get方法性能?
我有以下控制器:
@GetMapping("/v1/quotes")
public List<MyQuote> getQuotes() {
return hazelcastMap.values().stream()
.map(r -> new Quote(r))
.collect(Collectors.toList());
}
大约需要330毫秒,但我需要改进它,以在100毫秒或更快的时间内执行请求
有没有提高绩效的方法
# 1 楼答案
人们普遍认为,流的效率略低于使用迭代器和/或循环的老式方法。但你不太可能从中得到300%以上的改善。你可能会得到10%或20%的改善。。。如果您正在转换内存中的正则
Map
。对于HazelcastIMap
,使用流与优化代码的开销将是微不足道的(您应该能够通过针对应用程序的分析和仔细的基准测试来验证这一点。)
我认为您必须在系统设计中解决这个问题,或者可能通过Hazelcast调优来解决
当前操作中的一些性能问题由
IMap
javadoc暗示:问题是:
调用
values()
时,IMap
实现正在创建映射值的副本。然后,您将从该副本流式传输,而不是直接从IMap
流式传输values()
操作正在执行分布式查询。我怀疑这是不可避免的。无论哪种方式,这都可能是你正在做的事情中最昂贵的部分