我有一个高性能关键的代码段,需要访问struct的几个字段。将结构本身分配给变量或使用指针获取结构的成员是否更快,例如
struct A* = A_arr + n;
int a = A->t - A->s;
VS
struct A = A_arr[n];
int a = A.t - A.s;
感谢您的帮助!
答案 0 :(得分:4)
理想情况下,您可以自己测量一下以找出答案。从理论上讲,一个好的编译器会为两者创建相同的程序集。
第二个版本更自然,因此更具可读性,所以我更喜欢它,直到它被测量并发现不太理想。
答案 1 :(得分:2)
他们很可能是一样的。如果编译器生成的代码对于一个版本来说行为明显较慢,那么它就是一个糟糕的编译器。