结构成员访问的性能

时间:2012-11-17 22:24:16

标签: c performance optimization struct

我有一个高性能关键的代码段,需要访问struct的几个字段。将结构本身分配给变量或使用指针获取结构的成员是否更快,例如

struct A* = A_arr + n;
int a = A->t - A->s;

VS

struct A = A_arr[n];
int a = A.t - A.s;

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

理想情况下,您可以自己测量一下以找出答案。从理论上讲,一个好的编译器会为两者创建相同的程序集。

第二个版本更自然,因此更具可读性,所以我更喜欢它,直到它被测量并发现不太理想。

答案 1 :(得分:2)

他们很可能是一样的。如果编译器生成的代码对于一个版本来说行为明显较慢,那么它就是一个糟糕的编译器。