跨函数/类的C ++编译器优化

时间:2016-04-05 15:55:00

标签: c++ gcc optimization clang compiler-optimization

class modifier {
private:
    float origin = 0.0, range = 1.0;
public:
    int map(float input) {
        return static_cast<int>((input - origin) / range);
    }
};

modifier mod;
mod.origin = std::rand();
mod.range = std::rand(); // example only
for(std::ptrdiff_t y = 0; y < h; ++y)
for(std::ptrdiff_t x = 0; x < w; ++x)
    out[x][y] = mod.map( in[x][y] );

C ++编译器(GCC,Clang)是否能够优化这样的代码,以便非迭代期间非静态数据成员originrange仍然存储在寄存器中,而不是再次查找每一次?

0 个答案:

没有答案