繁体   English   中英

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

[英]overloaded array subscript [] operator slow

我用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数组的指针

operator[]const重载实际上是返回一个副本而不是一个dtype const & 如果dtype很大,副本可能很昂贵。

像这样的原型应该解决这个问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM