gpt4 book ai didi

java - 如何提高从 hazelcast 读取数据的 Get 方法性能?

转载 作者:行者123 更新时间:2023-12-02 10:06:16 77 4
gpt4 key购买 nike

我有以下 Controller :

@GetMapping("/v1/quotes")
public List<MyQuote> getQuotes() {
return hazelcastMap.values().stream()
.map(r -> new Quote(r))
.collect(Collectors.toList());
}

大约需要 330 毫秒,但我需要改进它以在 100 毫秒或更快的时间内执行请求。

有什么提高性能的想法吗?

最佳答案

人们普遍认为,流的效率比使用迭代器和/或循环的老式方式要低一些。但你不太可能从中获得 300% 以上的改进。如果您正在转换常规内存 Map,您可能会获得 10% 或 20% 的改进... 。对于 Hazelcast IMap ,使用流与最佳代码的开销将是微不足道的。

(您应该能够通过针对您的应用程序的分析和仔细的基准测试来验证这一点。)

<小时/>

我认为您必须在系统设计中解决这个问题,或者可能通过 Hazelcast 调整来解决。

IMap 暗示了您当前正在执行的操作存在一些性能问题。 javadoc:

Collection<V> values()

Returns a collection clone of the values contained in this map.

Warning: The collection is NOT backed by the map, so changes to the map are NOT reflected in the collection, and vice-versa.

This method is always executed by a distributed query, so it may throw a QueryResultSizeExceededException if GroupProperty.QUERY_RESULT_SIZE_LIMIT is configured.

问题是:

  • 当您调用values()时,IMap实现它正在创建 map 值的副本。然后,您将从该副本进行流式传输,而不是直接从IMap进行流式传输。 .

  • values()操作正在执行分布式查询。我怀疑这是不可避免的。不管怎样,这可能是您正在做的事情中成本最高的部分。

关于java - 如何提高从 hazelcast 读取数据的 Get 方法性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55319595/

77 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com