所以我对 C++ 并不陌生,但性能优化和缓存的整个概念是。我用 C++(为学校)实现了一个可扩展哈希类,现在我必须到处优化它。
谁能用简单的术语向我解释什么是缓存(以及它如何在 C++ 中实现)...我找到了一些教程,但我几乎一无所知。我阅读了一些有关静态变量的内容,这些变量会记住并保存在缓存内存中,某些方法计算并返回它的最后一件事。该函数仅在初始参数更改时重新计算(抱歉,如果我没有解释得太好 :D)。
根据我目前对缓存的理解,我认为(例如,对于我的 ExtHash 类中的 min 和 max 方法)我可以以某种方式缓存变量中的最小值和最大值,然后每次添加或删除元素时在表中,我只需要将该元素与缓存的最小值或最大值进行比较,以确定是否必须更改最小值和最大值(我不需要再次遍历整个数组来找到新的最小值和最大值)。 我理解正确吗?怎么办?
如果有人花时间解释一下,我将不胜感激。
最佳答案
说吧。缓存是您临时存储您将来可能需要的东西。
我给你举个例子。在这里,您的函数 foo 具有一些计算功能(无论它是什么)。
虽然函数 foo() 可能是一个昂贵的计算函数。
您的客户端代码端可能有:
int a = foo(10);
int b = foo(11);
int c = foo(11);
如果您不知道 c 与 b 相同,您将使用 'foo' 进行计算,这可能会很昂贵。
现在让我们将其更改为缓存:
int bar(int key)
{
static int s_key = key;
static int s_value = foo(key);
if ( key == s_key ) return s_value;
s_key = key;
s_value = foo(key);
return s_value;
}
现在您不必在 foo(11)
上重复计算。
但是,这只是一个单项缓存,只能在您计算容易重复的输入时处理。
如果您正在处理 n-entry 缓存,则需要一些其他算法来管理缓存,例如“LRU”
关于c++ - C++中的缓存(或多或少适合初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853513/