Caching Java缓存评估代码

Caching Java缓存评估代码,caching,ehcache,Caching,Ehcache,为非db操作实现缓存有意义吗?实现它以评估冗长的代码块有意义吗?例如,我有一个接受参数的代码块。基于此参数,它遍历if/else块的详细列表,直到匹配正确的值并返回一个值。在我的例子中,In参数是有限的,OUT参数基于In参数是一致的,即对于每个“A”,返回值是“B”,对于每个“X”,返回值是“Z”。这种操作不涉及数据库记录。我想通过引入缓存,从长远来看,我可以从评估中减少任何时间。建议?谢谢。只要执行的代码足够长或复杂,足以证明所做的工作是合理的,这就非常有意义。例如,请参见Spring在的缓

为非db操作实现缓存有意义吗?实现它以评估冗长的代码块有意义吗?例如,我有一个接受参数的代码块。基于此参数,它遍历if/else块的详细列表,直到匹配正确的值并返回一个值。在我的例子中,In参数是有限的,OUT参数基于In参数是一致的,即对于每个“A”,返回值是“B”,对于每个“X”,返回值是“Z”。这种操作不涉及数据库记录。我想通过引入缓存,从长远来看,我可以从评估中减少任何时间。建议?谢谢。

只要执行的代码足够长或复杂,足以证明所做的工作是合理的,这就非常有意义。例如,请参见Spring在的缓存注释支持,它在Java方法级别上工作。但是您可以自己在非Spring环境中轻松实现这种方法


您应该首先分析您的应用程序,看看在受影响的代码块中花费了多少时间/CPU,看看缓存在这里是否有意义。

这取决于您如何评价低延迟。根据(幻灯片#13),从主存顺序读取1MB的成本约为0.25ms,还有很多其他更昂贵的东西。从同一张幻灯片:

  • 单磁盘寻道速度慢40倍
  • 从网络读取1MB数据的速度要慢40倍
  • 从磁盘读取1MB数据的速度要慢120倍
因此,缓存在某些情况下会有很大帮助,但您需要进行分析,看看您的算法浪费了多少时间,然后做出决定