gpt4 book ai didi

c# - C#/C++ 中缓存或预计算的不可变函数

转载 作者:太空狗 更新时间:2023-10-29 21:09:16 25 4
gpt4 key购买 nike

“不可变函数”或“不可变方法”是指如果给它相同的参数,其结果永远不会改变的函数。

当您想缓存不可变函数的预计算值时,我很想知道是否有人知道更通用或更简洁的解决方案。

让我用一个简单的例子来解释我的意思:

//Let's assume that ComputeStuff() returns a widely used value 
//and that
//1. It is immutable (it will always return the same result)
//2. its performance is critical, and it cannot be accepted to compute
// the result at each call, because the computation is too slow
//I show here a way to solve the problem, based on a cached result.
//(this example works in a case of a method with no arguments.
// A hash would be required in order to store multiple precomputed results
//depending upon the arguments)
private string mComputeStuff_Cached = null;
public string ComputeStuff()
{
if (mComputeStuff_Cached != null)
return mComputeStuff_Cached ;

string result;
//
// ...
//Do lots of cpu intensive computation in order to compute "result"
//or whatever you want to compute
//(for example the hash of a long file)
//...
//

mComputeStuff_Cached = result;
return mComputeStuff_Cached ;
}

注意事项:
- 我添加了标签 C++ 作为 C++ 中的解决方案也会让我感兴趣
- “不可变函数”的概念对于数据库开发人员来说很常见,因为函数可以定义为“不可变”或“在事务中不可变”(这是提高查询性能的好方法)。

提前致谢

最佳答案

Memoization ”在这里可能是一个有用的术语。那里有一些内存库(我可以发誓 boost 中有一个,但我现在找不到它)。在网络上搜索“memoize”或“memoization”以及您选择的语言会显示一些结果。

这是 Wikibooks 中的一篇简洁文章:Optimizing C++/General optimization techniques/Memoization

关于c# - C#/C++ 中缓存或预计算的不可变函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832031/

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