-1

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

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

对比

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

谢谢您的帮助!

4

2 回答 2

5

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

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

于 2012-11-17T22:26:50.773 回答
2

他们很可能是一样的。如果编译器生成的代码在一个版本中表现得非常慢,那么它就是一个糟糕的编译器。

于 2012-11-17T22:25:59.993 回答