目前我有以下内容:
class Transform
{
int N; // set in other functions
std::unordered_map<int,float> cache;
float Wn(int n)
{
std::unordered_map<int,float>::const_iterator got = cache.find(n);
if(got == cache.end())
return cache[n] = sin((M_PI / (2 * N)) * (n + 0.5f));
return cache[n];
}
由于函数Wn
被称为LOT且只有n
参数发生变化,我试图缓存它们。我的问题是,在许多情况下,函数需要比没有缓存更长的时间,有时甚至长25%。有没有办法优化这个?
答案 0 :(得分:3)
假设输入整数通常在一个小范围内,只需使用数组作为缓存。即使某些值无法缓存,它也会比散列更有效。