gpt4 book ai didi

c++ - C++中的缓存(或多或少适合初学者)

转载 作者:行者123 更新时间:2023-11-28 06:13:10 26 4
gpt4 key购买 nike

所以我对 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/

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