我什么时候应该缓存计算结果?

时间:2014-07-03 03:41:12

标签: caching cpu-cache

有没有一种好方法可以判断我是否应该缓存计算结果?或者换句话说,在什么条件下从内存中检索比重新计算慢?

我知道基准测试会给出明确的答案。但是,基准测试非常耗时,尤其是在有许多小型计算需要测试时。我正在寻找一个好的经验法则,这在大多数情况下都会很好用。

我认为这与CPU的板载内存大小有关。可能是RAM的缓存延迟...

1 个答案:

答案 0 :(得分:1)

  

有没有一种好方法可以判断我是否应该缓存a的结果   计算?或者以不同的方式询问,在什么条件下检索   从内存慢于重新计算?

我假设你问的是使用lookup-table (LUT)。  这取决于:

  1. 计算的复杂性
  2. LUT的大小
  3. 如果你有很多简单计算的结果,那么重新计算可能会更快。 如果您有复杂操作的结果可以存储在适合较低缓存级别(L1,L2)的LUT中,LUT可以加速您的代码。

    但是,正如你所说,基准测试将给出明确的答案。 Here你有一个LUT与计算比较的例子。