在ehcache中有更多的可搜索属性会降低缓存的性能吗?



我正在做一个项目,我们正在使用ehcache。我们正在大量使用搜索API,并且我们正在使用的值有大约5-7个搜索属性。

所以,我想知道有这么多搜索属性会降低缓存的性能吗?

在开源Ehcache中,搜索功能使用蛮力。这意味着搜索成本按如下方式支付:

  1. 在插入到缓存中时,搜索子系统将确保属性值与所配置的预期类型匹配。
  2. 在搜索时,您必须再次从映射中提取属性值-仅限于查询中使用的属性。

鉴于此,属性的数量对put有直接的性能影响,但对get没有影响。

EhCache文档说明如下

搜索操作在O(n)时间内完成.....测试显示搜索性能的平均值为对于10,000个条目的缓存,代表性查询用时4.6 ms,而427 ms对于1,000,000个条目的缓存。因此,独立实现是适合开发和测试。

当使用独立Ehcache没有BigMemory用于生产时,它是建议只搜索少于100万的缓存元素。不同标准的表现各不相同。例如,这里是一些查询及其在200,000个元素缓存上的执行时间。(注意,这些结果都比上面给出的时间快因为它们只执行一个Criteria)。

这里提到的两个重要的事情是——不同标准的性能是不同的,如果有一个标准和多个标准,这很重要。虽然只有通过对用例进行基准测试才能发现对性能的实际影响,但文档表明它有一些影响。最好的方法是自己进行基准测试。

最新更新