-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

理想的には、これを自分で測定して調べます。理論的には、優れたコンパイラは両方に対して同じアセンブリを作成します。

2番目のバージョンはより自然で読みやすいので、測定されて最適でないと判明するまではそれをお勧めします。

于 2012-11-17T22:26:50.773 に答える
2

それらはおそらく同じです。コンパイラが1つのバージョンで動作が大幅に遅いコードを生成する場合、それは悪いコンパイラです。

于 2012-11-17T22:25:59.993 に答える