重载数组下标[]运算符缓慢

时间:2014-04-04 13:34:51

标签: c++ performance operator-overloading

我用c ++编写了自己的Array类并重载了数组下标[]运算符,代码:

inline dtype &operator[](const size_t i) { return _data[i]; }
inline dtype operator[](const size_t i) const { return _data[i];}

其中_data是指向包含该数组的内存块的指针。分析表明,这个重载运算符单独占用总计算时间的10%(在长蒙特卡罗模拟中,我使用g ++进行最大优化编译)。这看起来很多,不知道为什么会这样吗?

编辑:dtype是double,而_data是指向double

数组的指针

1 个答案:

答案 0 :(得分:2)

const的{​​{1}}重载实际上是返回副本而不是operator[]。如果dtype很大,那么副本可能很昂贵。

原型设计可以解决这个问题:

dtype const &