改善价值哈希

时间:2015-12-19 09:51:20

标签: c++ optimization

目前我有以下内容:

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%。有没有办法优化这个?

1 个答案:

答案 0 :(得分:3)

假设输入整数通常在一个小范围内,只需使用数组作为缓存。即使某些值无法缓存,它也会比散列更有效。