Der*_*rek 5 c pointers instructions
我想弄清楚在C中访问指针需要多少个时钟周期或总指令.我不认为我知道如何弄清楚例如,p-> x = d-> a + f-> b
我会假设每个指针有两个加载,只是猜测指针会有一个加载,以及值的加载.所以在这个操作中,指针分辨率将是一个比实际添加更大的因素,只要试图加速这个代码,对吧?
这可能取决于所实现的编译器和架构,但我是否走在正确的轨道上?
我已经看到了一些代码,其中每个值,例如,3个添加,来自a
f2->sum = p1->p2->p3->x + p1->p2->p3->a + p1->p2->p3->m
Run Code Online (Sandbox Code Playgroud)
结构的类型,我试图定义这是多么糟糕
这取决于手头的架构.
某些体系结构可以为指令引用/取消引用内存,而无需先将其加载到寄存器中,而其他体系结构则不会.某些体系结构没有计算偏移量的指令概念,并且会使您加载内存地址,向其添加偏移量,然后允许您取消引用内存位置.我确信芯片到芯片的差异更大.
一旦超过这些,每条指令也需要不同的时间,具体取决于架构.说实话,这是一个非常非常小的开销.
为了您的提领的项目链立刻问题,缓慢将进来的事实,很可能有一个参考穷地方越远,你的提领走链.这意味着更多的缓存未命中,这意味着更多的命中主内存(或磁盘!)来获取数据.与CPU相比,主内存非常慢.