重载 [] 运算符进行数组访问会影响性能吗?
  • 板块学术版
  • 楼主DaydreamWarrior
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/9 20:07
  • 上次更新2024/10/9 21:33:18
查看原帖
重载 [] 运算符进行数组访问会影响性能吗?
407214
DaydreamWarrior楼主2024/10/9 20:07

就是比如

class matrix{
    private:
        int m[N][N];
    public:
        int* operator [] (int x){return m[x];}
}a;

a[0][0]a.m[0][0] 会有性能差别吗,至少汇编代码有差别,看起来 a[0][0] 还更好

matrix d;
int modify(int x,int y,int z){
    d.m[x][y] = z;
}

modify(int, int, int):
        movsx   rdi, edi
        movsx   rsi, esi
        imul    rdi, rdi, 65
        add     rdi, rsi
        mov     DWORD PTR d[0+rdi*4], edx
matrix d;
int modify(int x,int y,int z){
    d[x][y] = z;
}

modify(int, int, int):
        movsx   rdi, edi
        movsx   rsi, esi
        imul    rdi, rdi, 260
        mov     DWORD PTR d[rdi+rsi*4], edx

gcc 9.3 -O2

请问这是什么情况

2024/10/9 20:07
加载中...