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)是否能够优化这样的代码,以便非迭代期间非静态数据成员origin
和range
仍然存储在寄存器中,而不是再次查找每一次?